Pagini recente » Cod sursa (job #2286572) | Cod sursa (job #2694066) | Cod sursa (job #2679931) | Cod sursa (job #3208688) | Cod sursa (job #3221164)
#include <bits/stdc++.h>
#pragma GCC optimize ("O4")
#pragma GCC optimize ("fast-math")
#pragma GCC optimize ("unroll-loops")
using namespace std;
//#define int long long
#define ll long long
//#define pb push_back
//#define mp make_pair
// using ll = long long
// typedef long long ll
//
#define cin fin
#define cout fout
ifstream cin ("euro.in");
ofstream cout ("euro.out");
int n, t;
const int NMAX = 35e3;
const int VMAX = 380;
int k;
int v[NMAX + 1], sp[NMAX + 1], poz[NMAX + 1];
ll rez[NMAX + 1];
void solve (void){
int sum, i, maxi;
ll gigi, rip;
for (i = 1, sum = 0; i < n; ++ i){
sum += v[i];
if (sum < 0){
sp[++ k] = sum;
poz[k] = i;
sum = 0;
}
}
sum += v[n], sp[++ k] = sum;
poz[k] = n;
for (int i = 1; i <= k; ++ i){
gigi = sp[i] * poz[i] + rez[i - 1];
sum = sp[i];
for (int j = i - 1; j >= i - VMAX && j >= 1; -- j){
sum += v[j];
rip = sum * poz[i] + rez[j - 1];
if (maxi > rip)
maxi = rip;
}
rez[i] = gigi - (ll)t;
}
}
void read(void){
cin >> n >> t;
for (int i = 1; i <= n; ++ i){
cin >> v[i];
}
}
void afis (void){
cout << rez[k];
}
signed main (void){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
read();
solve();
afis();
return 0 ^ 0;
}