Cod sursa(job #206796)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 9 septembrie 2008 17:28:22
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#include <vector>

using namespace std;

#define maxn 2010
#define maxx 1510
#define max(a,b) (a > b ? a : b)

int n, c, sol;
int a[maxn], b[maxn];
vector <int> v[maxx];
int g[maxx];

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

	scanf("%d %d ", &n, &c);

	int i, j, k, sum;

	for (i=1; i<=n; i++) scanf("%d %d ", &a[i], &b[i]);

	for (i=1; i<=n; i++) v[a[i]].push_back(b[i]);

	for (i=0; i<maxx; i++) g[i] = v[i].size();

	for (i=1; i<=n; i++)
	{
		sum = 0;

		for (j=0; j<maxx; j++)
		{
			for (k=0; k<g[j]; k++) 
				if (v[j][k] >= b[i]) sum += b[i];
			sum -= c;

			if (sum < 0) sum = 0;
			sol = max(sol, sum);
		}
	}

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

	return 0;
}