THPTTD_113 - Minrange

Xem dạng PDF

Gửi bài giải

Điểm: 10,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: minrange.inp
Output: minrange.out

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, JavaScript, Kotlin, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 3
    lephuochauhungvuong  đã bình luận lúc 11, Tháng 3, 2025, 7:54
    #include <iostream>
    #include <deque>
    #include <vector>
    #include <fstream>
    using namespace std;
    
    int main() {
        // Mở file đầu vào và đầu ra
        ifstream infile("minrange.inp");
        ofstream outfile("minrange.out");
    
        int N, k;
        infile >> N >> k;
        vector<int> A(N);
    
        // Đọc mảng A
        for (int i = 0; i < N; ++i) {
            infile >> A[i];
        }
    
        // Deque để lưu các chỉ số
        deque<int> dq;
    
        // Duyệt qua mảng A từ k đến N
        for (int i = 0; i < N; ++i) {
            // Loại bỏ các chỉ số không còn trong phạm vi cửa sổ
            if (!dq.empty() && dq.front() < i - k + 1) {
                dq.pop_front();
            }
    
            // Loại bỏ các phần tử trong deque có giá trị lớn hơn A[i]
            while (!dq.empty() && A[dq.back()] > A[i]) {
                dq.pop_back();
            }
    
            // Thêm chỉ số của A[i] vào deque
            dq.push_back(i);
    
            // Khi đủ số phần tử (i >= k - 1), in ra kết quả
            if (i >= k - 1) {
                outfile << A[dq.front()] << endl; // A[dq.front()] là giá trị nhỏ nhất trong cửa sổ
            }
        }
    
        // Đóng file sau khi sử dụng
        infile.close();
        outfile.close();
    
        return 0;
    }
    

  • -3
    buiminhkhoi  đã bình luận lúc 30, Tháng 9, 2024, 12:40 sửa 2

    hahahahaha dễ vocolo