Cod sursa(job #477558)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 15 august 2010 12:29:03
Problema Tribute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <string.h>

int n, sol, d[4], x[50002], y[50002], f[50002];

inline int minim (int a, int b) {return a < b ? a : b;}

void rez ()
{
	d[0] ++;
	int i, n = 50000, s = 0, sol1[50002] = {0}, sol2[50002];
	
	for (i = 0; i <= n; i ++)
	{
		sol1[i] = sol1[i - 1] + s;
		s += f[i];
	}
	
	s = 0;
	for (i = n; i >= 0; i --)
	{
		sol2[i] = sol2[i + 1] + s;
		s += f[i];
	}
	
	int min = 1000000000;
	for (i = 0; i <= n - d[d[0]]; i ++)
		min = minim (sol1[i] + sol2[i + d[d[0]]], min);
	sol += min;
}

int main ()
{
	freopen ("tribute.in", "r", stdin);
	freopen ("tribute.out", "w", stdout);
	
	scanf ("%d %d %d", &n, &d[1], &d[2]);
	
	int i;
	for (i = 1; i <= n; i ++)
		scanf ("%d %d", &x[i], &y[i]);
	
	for (i = 1; i <= n; i ++)
		f[x[i]] ++;
	rez ();
	
	memset (f, 0, sizeof (f));
	for (i = 1; i <= n; i ++)
		f[y[i]] ++;
	rez ();
	
	printf ("%d\n", sol);
	
	return 0;
}