Cod sursa(job #942361)

Utilizator dvh312dvh312 dvh312 Data 22 aprilie 2013 07:01:07
Problema Euro Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>

#define f1 "euro.in"
#define f2 "euro.out"
//#define f1 "account.inp"
//#define f2 "account.out"
long long t;
using namespace std;
int main(){
    ifstream fi;fi.open(f1);
    ofstream fo;fo.open(f2);
    long long a[35000];
    long long n;
    long long f[35000],s[35000],day[35000];
    fi>>n>>t;
    long long cursum,ns;
    ns=0;
    cursum=0;
    for (int i=1;i<n;i++) {
        fi>>a[i];
        cursum+=a[i];
        if (cursum<0){
            ++ns;
            s[ns]=cursum;
            //fo<<s[ns]<<endl;
            cursum=0;
            day[ns]=i;
        }
    }
    fi>>a[n];
    cursum+=a[n];
    ++ns;
    s[ns]=cursum;
    //fo<<s[ns]<<endl;
    day[ns]=n;
    f[1]=s[1]*day[1]-t;
    for (int i=2;i<=ns;i++){
        cursum=s[i];
        f[i]=f[i-1]+s[i]*day[i]-t;
        for (int j=i-1;j>0 and j>i-200;j--){
            cursum+=s[j];
            if (f[i]<f[j-1]+cursum*day[i]-t) f[i]=f[j-1]+cursum*day[i]-t;
        }
    }
    fo<<f[ns];
    fi.close();
    fo.close();
    return 0;
}