Cod sursa(job #2259279)

Utilizator Dobricean_IoanDobricean Ionut Dobricean_Ioan Data 13 octombrie 2018 11:16:23
Problema Euro Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#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);
}