比赛 防止浮躁的小练习v0.6 评测结果 WWWWWWWWWW
题目名称 小朋友的数字 最终得分 0
用户昵称 Lethur 运行时间 0.633 s
代码语言 C++ 内存使用 30.83 MiB
提交时间 2016-10-20 17:35:56
显示代码纯文本
#include<iostream>
#include<cstdio>

#define MAXN 1000001
using namespace std;
bool flag;
long long n,m,f[MAXN],a[MAXN],tot,g[MAXN],w[MAXN];
int main()

{
	freopen("number2013.in","r",stdin);
	freopen("number2013.out","w",stdout); 
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    f[1]=a[1];
    long long maxx=a[1];
    w[1]=a[1];
    for(int i=2;i<=n;i++)
    {
        f[i]=max(f[i-1]+a[i],a[i]);
        w[i]=max(w[i-1],f[i]);

    }

    g[1]=w[1];
    g[2]=w[1]+g[1];
    if(g[2]>=g[1])
        flag=1;
    for(int i=3;i<=n;i++){
        if(w[i-1]>0){
            g[i]=(w[i-1]+g[i-1])%m;
            if(g[i]>g[1]) flag=1;
        }
        else g[i]=g[2];
    }
    if(flag)
        printf("%d",g[n]);
    else 
        printf("%d",g[1]%m);
	fclose(stdin);
	fclose(stdout);
    return 0;

}