Cod sursa(job #1131596)

Utilizator otto1Palaga Vicentiu-Octavian otto1 Data 28 februarie 2014 21:55:25
Problema Euro Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.8 kb
#include<fstream>
#include<vector>
#define N 35000
using namespace std;
ifstream f("euro.in");
ofstream g("euro.out");
long long n,t,i,s,suma,nr,j,a[N];
long long d[N];
vector<pair<long long,long long> >v;
int main()
{
    f>>n>>t;
    for(i=1;i<=n;++i)
    {
        f>>a[i];
        s+=a[i];
        if(s<0)
        {
            v.push_back(make_pair(s,i));
            s=0;
        }
    }
    if(!v.size()||v[v.size()-1].second!=n)
    v.push_back(make_pair(s,n));
    for(i=0;i<v.size();++i)
    {
        suma=v[i].first;
        nr=v[i].second;
        d[i+1]=d[i]+suma*nr-t;
        for(j=i-1;j>=0&&(i-j)*(i-j)<=t+200;--j)
        {
            suma+=v[j].first;
            d[i+1]=max(d[i+1],d[j]+suma*nr-t);
        }
    }
    g<<d[v.size()]<<'\n';
    return 0;
}