KSUM - Món quà của thầy Kiên

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

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

Trong lớp học của thầy Kiên, Bờm là một học sinh vô cùng xuất sắc. Hôm nay, Bờm lại tiếp tục đứng nhất trong một Contest giữa các trường, vì thế thầy Kiên quyết định sẽ tặng Bờm một ít kẹo xem như phần thưởng.

Thầy Kiên có ~n~ viên kẹo được đánh số lần lượt từ ~1~ đến ~n~. Viên kẹo thứ ~i~ có độ ngon ~w_i~. Hôm nay, thầy quyết định tặng Bờm ~k~ viên kẹo liên tiếp ~(1 ≤ k ≤ n)~ trong ~n~ viên kẹo. Mặc khác, vì Bờm rất xuất sắc nên thầy Kiên muốn tổng độ ngon của những viên kẹo Bờm nhận được là lớnnhất. Bạn hãy giúp thầy Kiên tính toán tổng độ ngon của những viên kẹo mà Bờm sẽ nhận được nhé!

Input

  • Dòng đầu tiên chứa số nguyên dương ~n~ và ~k~ ~(k ≤ n ≤ 10^5)~ là số lượng kẹo của thầy Kiên;
  • Dòng thứ ~i~ trong ~n~ dòng tiếp theo chứa duy nhất một số nguyên ~w_i~ là độ ngon của viên kẹo thứ ~i~ ~(1 ≤ w_i ≤ 10^9)~.

Giới hạn:

  • ~40\%~ số test có ~k ≤ n ≤ 10000~;
  • ~60\%~ số test còn lại không có giới hạn gì thêm.

Output

  • Đưa ra kết quả bài toán trên một dòng.

Sample

Input #1
5 2
4
3
2
6
1
Output #1
8

Hint

  • Thầy Kiên cần chọn ~2~ viên kẹo liên tiếp sao cho tổng độ ngon là lớn nhất, vì thế thầy sẽ chọn viên kẹo thứ ~3~ và viên kẹo thứ ~4~.

Problem source: Kc97ble - Free Contest


Bình luận

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



  • -1
    van123dz  đã bình luận lúc 9, Tháng 4, 2024, 11:01

    đề sai nhé ll mới AC được


  • 0
    nhantrong  đã bình luận lúc 22, Tháng 2, 2024, 7:31

    include <iostream>

    include <vector>

    include <algorithm>

    using namespace std;

    int main() { int n, k; cin >> n >> k;

    vector&lt;long long> w(n); // Sử dụng long long để đảm bảo không bị tràn số
    for (int i = 0; i < n; ++i) {
        cin >> w[i];
    }
    
    // Tính tổng tiền tố
    vector&lt;long long> prefix_sum(n + 1, 0);
    for (int i = 1; i <= n; ++i) {
        prefix_sum[i] = prefix_sum[i - 1] + w[i - 1];
    }
    
    long long max_sum = 0;
    for (int i = k; i <= n; ++i) {
        long long current_sum = prefix_sum[i] - prefix_sum[i - k];
        max_sum = max(max_sum, current_sum);
    }
    
    cout << max_sum << endl;
    
    return 0;
    

    }


  • -1
    ______  đã bình luận lúc 22, Tháng 2, 2024, 7:20

    hinh thuc test case kho the =)