Cod sursa(job #13151)

Utilizator webspiderDumitru Bogdan webspider Data 5 februarie 2007 21:46:51
Problema Tribute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <stdio.h>

using namespace std;

int nrde[50001][2];
int sume[50001][2];

int x,y,i,j,n,m;
int dx,dy;
int minc=1000000000,mint=1000000000;

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

	scanf("%d %d %d\n", &n, &dx, &dy);

	for ( i = 1; i <= n; i++ )
	{
		scanf("%d %d\n", &x, &y );
		nrde[x][0]++;
		nrde[y][1]++;
		sume[0][0] += x;
		sume[0][1] += y;
	}

	for ( i = 1; i <= 50001; i++ ) {
		nrde[i][0] += nrde[i-1][0];
		nrde[i][1] += nrde[i-1][1];
	}

	for ( i = 1; i <= 50001; i++ ) {
		sume[i][0] = sume[i-1][0];
		sume[i][1] = sume[i-1][1];
		if ( i - dx - 1 >= 0 )
			sume[i][0] += nrde[ i - dx - 1][0];
		sume[i][0] -= ( n - nrde[i-1][0] );

		if ( i - dy - 1 >= 0 )
			sume[i][1] += nrde[ i - dy - 1 ][1];
		sume[i][1] -= ( n- nrde[i-1][1] );
	}

	for ( i = 0; i <= 50001; i++ ) {
		minc = min ( minc, sume[i][0] );
		mint = min ( mint, sume[i][1] );
	}

	printf("%d\n", mint+minc);

	return 0;
}