Cod sursa(job #137220)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 17 februarie 2008 10:20:38
Problema Carnati Scor 20
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasa a 10-a Marime 0.74 kb
#include <stdio.h>

const int N_MAX = 2010;

int T[N_MAX], P[N_MAX], vec[N_MAX];
int N, C;

int suma(int v[])
{
	int MAX = v[0], sc = v[0], i;

	for (i = 1; i <= 1500; i ++) {
		if (sc > 0) sc += v[i];
		else {
			sc = v[i];
		}

		if (sc > MAX) MAX = sc;
	}

	return MAX;
}

int main()
{
	freopen("carnati.in", "r", stdin);
#ifndef _SCREEN_
	freopen("carnati.out", "w", stdout);
#endif

	int i, pret, j, s, MAX = 0;
	scanf("%d %d\n", &N, &C);
	for (i = 1; i <= N; i ++) {
		scanf("%d %d\n", &T[i], &P[i]);
	}

	for (i = 1; i <= N; i ++) {
		pret = P[i];

		for (j = 0; j <= 1500; j ++) vec[j] = -C;
		for (j = 1; j <= N; j ++) {
			if (P[j] >= pret) vec[T[j]] = pret - C;
		}

		s = suma(vec);

		if (s > MAX) MAX = s;
	}

	printf("%d\n", MAX);

	return 0;
}