Cod sursa(job #1585801)

Utilizator claudiuarseneClaudiu Arsene claudiuarsene Data 31 ianuarie 2016 14:54:32
Problema Euro Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include<iostream>
#define NMax 34600
#define in "euro.in"
#define out "euro.out"
int n,t,L;
long long S[NMax],D[NMax],Sum,v[NMax],P[NMax];
using namespace std;
long long max(long long x,long long y)
{
    if(x>y)
        return x;
    return y;
}

int main()
{
    int i,j;
    freopen(in,"r",stdin);
    scanf("%d%d",&n,&t);
    Sum=0;
    for (i=1,L=1;i<=n;++i)
    {
        scanf("%lld",v+i);
        cout<<v[i];
        S[i]=S[i-1]+v[i];
        if (Sum<0)
        {
            ++L;
            Sum=0;
        }
        Sum+=v[i];
        P[L]=i;
    }
    fclose(stdout);
    for (i=1;i<=L;++i)
    {
        D[i]= -(1LL<<62);
        for (j=0;j<=i&&j*j<4*t; ++j)
            D[i]=max(D[i],  P[i]*(S[P[i]]-S[P[i-j]]) - t + D[i-j] );
    }

    freopen(out,"w",stdout);
    printf("%lld\n",D[L]);
    fclose(stdout);

    return 0;
}