Cod sursa(job #490056)

Utilizator stef2503Stefan Stan stef2503 Data 4 octombrie 2010 20:16:23
Problema Tribute Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

int main ()
{
	freopen("tribute.in", "r", stdin);
	freopen("tribute.out", "w", stdout);
	int n, i, a, dx, dy, vx[50001], vy[50001], max1=2000000000, max2=2000000000, k;
	scanf("%d %d %d", &n, &dx, &dy);
	for (i=1; i<=n; i++) {
		scanf("%d %d", &vx[i], &vy[i]);
	}
	sort(vx+1, vx+n+1);
	sort(vy+1, vy+n+1);
	if ((vx[n]-vx[1])>dx){
		for (a=vx[1]; a+dx<=vx[n]; a++) {
			k=0;
			for (i=1; vx[i]<=a; i++) {
				k+=(a-vx[i]);
			}
			for (i=a+dx; i<=n; i++) {
				k+=(vx[i]-a);
			}
			if (k<max1) {
				max1=k;
			}
		}
	} else {
		max1=0;
	}
	if ((vy[n]-vy[1])>dy){
		for (a=vy[1]; a+dy<=vy[n]; a++) {
			k=0;
			for (i=1; vy[i]<=a; i++) {
				k+=(a-vy[i]);
			}
			for (i=a+dy; i<=n; i++) {
				k+=(vy[i]-a);
			}
			if (k<max2) {
				max2=k;
			}
		}
	} else {
		max2=0;
	}
	k=max1+max2;
	printf("%d", k);
	/*for (i=1; i<=n; i++) {
		printf("%d %d\n", vx[i], vy[i]);
	}*/
	return 0;
}