比赛 |
EYOI与SBOI开学欢乐赛6th |
评测结果 |
AAWWTTATTT |
题目名称 |
简短的题目 |
最终得分 |
30 |
用户昵称 |
该账号已注销 |
运行时间 |
5.125 s |
代码语言 |
C++ |
内存使用 |
6.62 MiB |
提交时间 |
2022-09-19 20:09:10 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long qzh[100010],f[100010];
int n,l,r,len;
bool y=0,ct[100010],p=0,z=0;
int main(){
freopen("wwydatsv.in","r",stdin);
freopen("wwydatsv.out","w",stdout);
cin>>n>>l>>r;
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(x!=i)p=1;
if(ct[x]==0&&i!=1)z=1;
ct[x]=1;
if(x!=0)y=1;
qzh[i]=qzh[i-1]+x;
f[i]=-0x3f3f3f3f;
}
if(y==0){
for(int i=1;i<=n;i++){
cout<<0<<' ';
}
cout<<endl;
return 0;
}
if(p==0){
long long m=0;
for(int i=1;i<=n;i++){
long long ans;
if(i+r-1>n)ans=m;
else ans=(i+i+r-1)*(r)/2;
cout<<ans<<' ';
m=ans;
}
cout<<endl;
return 0;
}
if(z==0){
for(int i=1;i<=n;i++){
if(qzh[1]>0)
cout<<(long long)qzh[1]*r<<' ';
else cout<<(long long)qzh[1]*l<<' ';
}
cout<<endl;
return 0;
}
for(int i=1;i<=n;i++){
for(int j=max(1,i-r+1);j<=i;j++){
for(int k=i;k<=min(j+r-1,n);k++){
if(k-j+1<l)continue;
f[i]=max(qzh[k]-qzh[j-1],f[i]);
}
}
}
for(int i=1;i<=n;i++)cout<<f[i]<<' ';
cout<<endl;
return 0;
}