Cod sursa(job #2212691)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 14 iunie 2018 16:20:14
Problema Euro Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.69 kb
#include<fstream>
#include<cmath>
#define INF 1000000000000000000LL
using namespace std;
ifstream fi("euro.in");
ofstream fo("euro.out");
long long n,t,i,j,x,ng,Sum[34568],Gr[34568],Lst[34568],Dp[34568],val;
int main()
{
    fi>>n>>t;
    Gr[0]=-1;
    for(i=1; i<=n; i++)
    {
        fi>>x;
        Sum[i]=Sum[i-1]+x;
        if(Gr[ng]<0)
            ng++;
        Gr[ng]+=x;
        Lst[ng]=i;
    }
    val=sqrt((long double)t)+5;
    for(i=1; i<=ng; i++)
    {
        Dp[i]=-INF;
        for(j=i-1; j>=0 && i-j<=val; j--)
            Dp[i]=max(Dp[i],Dp[j]+(Sum[Lst[i]]-Sum[Lst[j]])*Lst[i]-t);
    }
    fo<<Dp[ng];
    fi.close();
    fo.close();
    return 0;
}