Pagini recente » Cod sursa (job #1448142) | Cod sursa (job #1585686) | Cod sursa (job #1630832) | Cod sursa (job #1870627) | Cod sursa (job #1679583)
#include<cstdio>
long long n,t,i,j,nr,p,u,s,a,b,v[501000],x[501000],y[501000],z[501000],d[501000];
FILE *f,*g;
long long maxim(long long a,long long b){
if(a>b)
return a;
return b;
}
int main(){
f=fopen("euro.in","r");
g=fopen("euro.out","w");
fscanf(f,"%lld%lld",&n,&t);
for(i=1;i<=n;i++){
fscanf(f,"%lld",&v[i]);
s += v[i];
if( s < 0 ){
x[++nr] = s;
y[nr] = i;
s = 0;
}
}
if( nr != n ){
x[++nr] = s;
y[nr] = n;
}
for(i=1;i<=nr;i++){
a = x[i];
b = y[i];
d[ i + 1 ] = d[i] + a * b - t;
for( j = i - 1; j >= 0 && ( i - j ) * ( i - j ) <= t + 100 ; j-- ){
a += x[j];
d[ i + 1 ] = maxim( d[ i + 1 ] , d[j] + a * b - t );
}
}
fprintf(g,"%lld",d[ nr + 1 ]);
fclose(f);
fclose(g);
return 0;
}