結果

問題 No.3050 Prefix Removal
ユーザー ゼリトキ
提出日時 2025-03-07 23:26:45
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,234 bytes
コンパイル時間 3,802 ms
コンパイル使用メモリ 281,496 KB
実行使用メモリ 11,352 KB
最終ジャッジ日時 2025-03-07 23:26:55
合計ジャッジ時間 9,037 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 2 WA * 53
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define ll long long
int main(){
    cin.tie(0)->sync_with_stdio(0);
    cout.tie(0);
    int N,K;
    cin>>N>>K;
    vector<int>A(N);
    rep(i,N) cin>>A.at(i);
    vector<ll>ruiseki(N);
    int cnt=0;
    rep(i,N){
        cnt+=A.at(i);
        ruiseki.at(i)=cnt;
    }
    ll ans=0;
    int siz=0;
    ll wa=0;
    priority_queue<int>pq;
    if(K==1){
        ans=-100000000000;
        rep(i,N){
            ans=max(ans,ruiseki.at(i));
        }
        cout<<ans<<endl;
        return 0;
    }
    for(int i=0;i<K-1;i++){
        pq.push(ruiseki.at(i));
        ans-=ruiseki.at(i);
        wa+=ruiseki.at(i);
        siz++;
    }
    ans+=K*(ruiseki.at(K-1));
    for(int i=K-1;i<N;i++){
        if(pq.top()<ruiseki.at(i)){
            if(K*ruiseki.at(i)-wa>ans){
                ans=K*ruiseki.at(i)-wa;
            }
        }
        else{
            if(K*ruiseki.at(i)-wa-ruiseki.at(i)+pq.top()>ans){
                ans=K*ruiseki.at(i)-wa-ruiseki.at(i)+pq.top();
                wa-=pq.top()-ruiseki.at(i);
                pq.pop();
                pq.push(ruiseki.at(i));
            }
        }
    }
    cout<<ans<<endl;
}
0