比赛 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;
}