Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
98357 | CSYZ_GanRZ | 早凉与序列4 | C++ | 通过 | 100 | 73 MS | 10624 KB | 593 | 2023-08-14 16:02:56 |
#include<bits/stdc++.h> #define N 200010 #define int long long using namespace std; int t,n,k,x; int a[N],s[N]; priority_queue<pair<int,int> >q; signed main(){ while(!q.empty()) q.pop(); cin>>n>>k>>x; if(x<0) x=-x,k=n-k; int pos=1e18,ans=0; q.push(make_pair(0,0)); for(int i=1;i<=n;i++){ cin>>a[i]; s[i]=s[i-1]+a[i]-x; q.push(make_pair(-s[i]-2*x*i,i)); while(i-q.top().second>k) q.pop(); ans=max(ans,s[i]+2*x*i+q.top().first); if(i-k>=0){ pos=min(pos,s[i-k]); ans=max(ans,s[i]-pos+2*k*x); } } cout<<ans<<endl; return 0; }