Pagini recente » Cod sursa (job #2750785) | Cod sursa (job #2539401) | Cod sursa (job #485403) | Cod sursa (job #1174453) | Cod sursa (job #941577)
Cod sursa(job #941577)
#include <iostream>
#include <fstream>
#define f1 "euro.in"
#define f2 "euro.out"
using namespace std;
int main(){
ifstream fi;fi.open(f1);
ofstream fo;fo.open(f2);
long a[35000];
long n,t;
fi>>n>>t;
for (int i=1;i<=n;i++){
fi>>a[i];
}
long csmax[35000];
long tong[35000];
long f[35000];
int l;
tong[0]=0;
l=1;
csmax[1]=l;
tong[1]=a[1];
for (int i=2;i<=n;i++){
tong[i]=tong[i-1]+a[i];
if (tong[i]-tong[l-1]<a[i]) l=i;
csmax[i]=l;
}
long x,y;
int solan[35000];
for (int i=1;i<=n;i++){
x=(f[csmax[i]-1]+(tong[i]-tong[csmax[i]-1])*i-(solan[csmax[i]-1]+1)*t);
y=f[i-1]+a[i]*i;
if (x>y){
f[i]=x;
solan[i]=solan[csmax[i]-1]+1;
} else {
f[i]=y;
}
}
fo<<f[n];
fi.close();
fo.close();
return 0;
}