Pagini recente » Cod sursa (job #1588137) | Cod sursa (job #1513603) | Cod sursa (job #2158874) | Cod sursa (job #1860921) | Cod sursa (job #489268)
Cod sursa(job #489268)
#include <stdio.h>
#include <algorithm>
#include <vector>
#define MAXN 35000
#define per pair<long long, long long>
using namespace std;
int A[MAXN];
long long s;
int i, N, T;
per a,b;
inline bool ok(const per &a, const per &b)
{
return (a.first * a.second - T*1LL) < (a.first * b.second);
}
int main()
{
freopen("euro.in","r",stdin);
freopen("euro.out","w",stdout);
scanf("%d %d",&N,&T);
for (i=1; i<=N; ++i)
scanf("%d",A+i);
vector<per> Q;
for (i=1; i<=N;){
s=0;
while (s>=0 && i<=N){
s+=A[i]*1LL;
++i;
}
a = make_pair(s, i-1);
while (Q.size() >= 1){
b = Q.back();
if ( ok(b, a) ){
Q.pop_back();
a.first += b.first;
}
else
break;
}
Q.push_back(a);
}
s=0;
for (i=0; i<Q.size(); ++i){
a = Q[i];
s+= a.first * a.second - T*1LL;
}
printf("%lld\n", s);
fclose(stdin); fclose(stdout);
return 0;
}