Cod sursa(job #15064)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 10 februarie 2007 17:04:10
Problema Euro Scor 55
Compilator c Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <stdio.h>

#define MAXN 34569

int N, T;
int x[MAXN], s[MAXN];
long long best[MAXN];

int main()
{
	freopen("euro.in", "rt", stdin);
	freopen("euro.out", "wt", stdout);
	scanf("%d %d", &N, &T);
	best[0] = 0;
	int i, lst = 1;
	for (i = 1; i <= N; i++)
	{
		scanf("%d", x + i);
		s[i] = s[i - 1] + x[i];
		best[i] = -(1LL << 60);

		int j; long long S2 = 0;
		for (j = lst; j <= i && j <= lst + 750; j++)
		{
			S2 = (long long)i * (s[i] - s[j - 1]);

			if (best[j - 1] + S2 - T > best[i])
			{
				best[i] = best[j - 1] + S2 - T;
				lst = j;
			}
		}
	}
	
	printf("%lld\n", best[N]);
	return 0;
}