Cod sursa(job #15058)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 10 februarie 2007 16:53:44
Problema Euro Scor 45
Compilator c Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>

#define MAXN 34569

int N, T;
int x[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);
		best[i] = -(1LL << 60);

		int j; long long S = 0; int p = -1;
		for (j = i; j >= lst; j--)
		{
			S += i * x[j];

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