Pagini recente » Cod sursa (job #3321360) | Borderou de evaluare (job #1447353) | Cod sursa (job #1851833) | Cod sursa (job #2441703) | Cod sursa (job #3316605)
#include <fstream>
#define nmax 34570
#define inf 1e18
using namespace std;
ifstream cin("euro.in");
ofstream cout("euro.out");
int n,m,t,x,poz[nmax];
long long v[nmax],dp[nmax],s[nmax],sum;
int main()
{
cin>>n>>t;
for(int i=1;i<=n;i++){
cin>>x;
if(sum<0){
v[++m]=sum;
poz[m]=i-1;
sum=x;
}else
sum+=x;
}
v[++m]=sum;
poz[m]=n;
for(int i=1;i<=m;i++){
s[i]=v[i]+s[i-1];
dp[i]=-inf;
for(int j=1;j<=i;j++)
dp[i]=max(dp[i],dp[j-1]+(s[i]-s[j-1])*poz[i]-t);
}
cout<<dp[m];
return 0;
}