Pagini recente » Cod sursa (job #608230) | Rating Ion Luca-Mihail (luca224) | Cod sursa (job #2157564) | Cod sursa (job #169418) | Cod sursa (job #2399080)
#include <cstdio>
#include <vector>
#define MaxN 34568
using namespace std;
struct Str{
long long int val;
long long int ind;
};
vector<Str> Sol;
long long int N, T, i, S, x; bool k;
int main()
{
freopen("euro.in", "r", stdin);
freopen("euro.out", "w", stdout);
scanf("%lld%lld", &N, &T);
for(i=1; i<=N; ++i){
scanf("%lld", &x);
S+=x; k=true;
if(S<0){Sol.push_back({S, i}); S=0; k=false;}
}
if(k==true) Sol.push_back({S, N});
for(i=1; i<Sol.size(); ++i){
if(Sol[i].val*Sol[i].ind+Sol[i-1].val*Sol[i-1].ind-2*T<(Sol[i].val+Sol[i-1].val)*Sol[i].ind-T){
Sol[i].val+=Sol[i-1].val;
Sol.erase(Sol.begin()+i-1);
--i;
}
}
S=0;
for(i=0; i<Sol.size(); ++i) S=S+Sol[i].val*Sol[i].ind-T;
printf("%lld", S);
return 0;
}