1 条题解

  • 0
    @ 2022-11-21 8:11:40
    #include<iostream>
    using namespace std;
    #define int long long
    int n,x;
    int dp[100001];
    int maxx(int a,int b){
        if(a>b) return a;
        return b;
    }
    inline int read()
    {
    	int x=0,f=1;char ch=getchar();
    	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    	return x*f;
    }
    signed main(){
        n=read();
        for(int i=1;i<=n;i++) dp[i]=-1e18;
        for(int i=1;i<=n;i++){
            x=read();
            for(int j=i;j;j--){
                dp[j]=max(dp[j],dp[j-1]+j*x);
            }
        }
        int cnt=0;
        for(int i=1;i<=n;i++) cnt=maxx(cnt,dp[i]);
        cout<<cnt<<endl;
        return 0;
    }
    

    • 1

    信息

    ID
    4658
    时间
    6000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者