比赛 |
EYOI与SBOI开学欢乐赛6th |
评测结果 |
AATATTATTT |
题目名称 |
简短的题目 |
最终得分 |
40 |
用户昵称 |
康尚诚 |
运行时间 |
6.132 s |
代码语言 |
C++ |
内存使用 |
6.19 MiB |
提交时间 |
2022-09-19 19:57:30 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
typedef long long LL;
int val[N];
LL h[N];//前缀和
bool allsame=true;int same;//第一个特判:全部相等
//第二个特判:r-l+1<10(不会写)
bool dizeng=true;
bool allzheng=true;//第四个特判:a[i]全部为正数(包括第三个特判a[i]=i)
bool all0=true;
int main()
{
freopen("wwydatsv.in","r",stdin);
freopen("wwydatsv.out","w",stdout);
val[0]=-1e7;
h[0]=0;
int n,L,R;
cin>>n>>L>>R;
for(int i=1;i<=n;i++)
{
cin>>val[i];
if(i==1) same=val[i];//第一个特判
else if(val[i]!=same) allsame=false;
if(val[i]<=val[i-1]) dizeng=false;
if(val[i]<0) allzheng=false;
if(val[i]) all0=false;
h[i]=h[i-1]+val[i];
}
if(allsame)
{
if(same<0)
{
for(int i=1;i<=n;i++)
{
cout<<same*L<<" ";
}
}
else
{
for(int i=1;i<=n;i++)
{
cout<<same*R<<" ";
}
}
}
else if(allzheng&&dizeng)
{
for(int i=1;i<=n-R;i++)
{
cout<<h[i+R-1]-h[i-1]<<" ";
}
for(int i=1;i<=R;i++)
{
cout<<h[n]-h[n-R]<<" ";
}
}
else if(all0)
{
for(int i=1;i<=n;i++)
{
cout<<"0 ";
}
}
else
{
LL mx;
for(int i=1;i<=n;i++)
{
mx=-1e9;
for(int l=1;l<=i;l++)
{
for(int r=i;r<=n&&r-l+1<=R;r++)
{
if(r-l+1<L) continue;
mx=max(mx,h[r]-h[l-1]);
}
}
cout<<mx<<" ";
}
}
}