[白俊]10025号:怠け者の白熊


回答日:2021年10月06日

質問する


質問リンク:https://www.acmicpc.net/problem/10025

アクセスと解析


これはスライドウィンドウアルゴリズムを用いた問題である.
コードは以下のように実現された.
  • 題では、与えられた最大サイズの配列が宣言され、氷の位置に値が入力される.
  • シロクマアルバートは、着席場所の左右にKを1つずつ食べて、最初の2*Kを覆うことができると言った.
  • から配列の値を追加し、2*K+1からインデックスの最低位置の値を減算し、次の値を追加します.このとき、もう1つの値の最値を更新します.
  • コード#コード#

    // 백준 10025번 : 게으른 백곰
    #include <iostream>
    
    using namespace std;
    
    int N, K, ans;
    int arr[1000001];
    
    int main() {
        cin >> N >> K;
    
        for (int i = 0; i < N; i++) {
            int g, x;
            cin >> g >> x;
            arr[x] = g;
        }
    
        K = 2 * K + 1;
        int sum = 0;
        for (int i = 0; i <= 1000001; i++) {
            if (i >= K) {
                sum -= arr[i - K];
            }
            sum += arr[i];
            ans = max(ans, sum);
        }
        cout << ans;
        return 0;
    }

    結果



    フィードバック


    いつでも入力値の範囲をよくチェックし、実施します.