Pagini recente » Cod sursa (job #1578410) | Cod sursa (job #60476) | Cod sursa (job #1881099) | Cod sursa (job #1477998) | Cod sursa (job #942361)
Cod sursa(job #942361)
#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;
}