屎山代码品鉴求调

P1725 琪露诺

MornHus @ 2023-11-01 21:14:56

RT,hack过不了


#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
int n,l,r;
int a[maxn];
int dp[maxn];
//             [i-r-1 , i-l]

int ans;
typedef pair<int,int> pii;

//first value second id

priority_queue<pii> ql,qr;
int main(){
    cin>>n>>l>>r;
    for(int i=0;i<=n;i++){
        cin>>a[i];
    }
    for(int i=0;i<l;i++){
        ql.push(make_pair(a[i],i));
    }
    for(int i=l;i<=n;i++){
        qr.push(make_pair(dp[i-l],i-l));
        if(i-r-1>=l)ql.push(make_pair(dp[i-r-1],i-r-1));
        while(!ql.empty()){
            if(ql.top().first==qr.top().first){
                if(ql.top().second==qr.top().second){
                    ql.pop();
                    qr.pop();
                }else{
                    break;
                }
            }else{
                break;
            }
        }
        dp[i]=qr.top().first+a[i];
    }
    for(int i=n-r-1;i<=n;i++)ans=max(ans,dp[i]);
    cout<<ans;
    return 0;
}

|