Pagini recente » Cod sursa (job #1911390) | Cod sursa (job #411996) | Cod sursa (job #2645703) | Cod sursa (job #835362) | Cod sursa (job #2217893)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("euro.in");
ofstream fout ("euro.out");
const int Dim = 40000;
long long D[Dim], Sum[Dim],Value[Dim],s = -1;
int n,t,k,m;
void Dynamic();
int main() {
int x;
fin >> n >> t;
for ( int i = 1 ; i <= n; ++i) {
fin >> x;
Sum[i] = Sum[i-1] + x;
if ( s < 0 ) {
++m;
s = 0;
}
s += x;
Value[m] = i;
}
Dynamic();
fout << D[m];
}
void Dynamic() {
const long long Inf = 1LL << 62;
for ( int i = 1; i <= n; ++i)
D[i] = -Inf;
int in = sqrt(t) + 10;
for ( int i = 1; i <= m; ++i)
for ( int j = max(0, i - in); j < i; ++j)
D[i] = max(D[i], D[j] + (Sum[Value[i]] - Sum[Value[j]] ) * Value[i] - t);
}