Pagini recente » Cod sursa (job #581769) | Cod sursa (job #365520) | Cod sursa (job #578760) | Cod sursa (job #782741) | Cod sursa (job #1852666)
#include <stdio.h>
#include <stdlib.h>
#define COORDONATE 50001
int x[COORDONATE], y[COORDONATE];
int stx[COORDONATE], drx[COORDONATE];
int sty[COORDONATE], dry[COORDONATE];
int main() {
FILE *fin, *fout;
int n, dx, dy, i, dist, xi, yi, sx, sy;
long long minx, miny;
fin = fopen( "tribute.in", "r" );
fout = fopen( "tribute.out", "w" );
fscanf( fin, "%d%d%d", &n, &dx, &dy );
for ( i = 0; i < n; i++ ) {
fscanf( fin, "%d%d", &xi, &yi );
x[xi]++;
y[yi]++;
}
sx = 0;
sy = 0;
for ( i = 1; i < COORDONATE; i++ ) {
sx += x[i-1];
sy += y[i-1];
stx[i] = stx[i-1] + sx;
sty[i] = sty[i-1] + sy;
}
sx = 0;
sy = 0;
for ( i = COORDONATE - 2; i >= 0; i-- ) {
sx += x[i+1];
sy += y[i+1];
drx[i] = drx[i+1] + sx;
dry[i] = dry[i+1] + sy;
}
minx = stx[0] + drx[dx];
for ( i = 0; i < COORDONATE - dx; i++ ) {
if ( minx > stx[i] + drx[i+dx] )
minx = stx[i] + drx[i+dx];
}
miny = sty[0] + dry[dy];
for ( i = 0; i < COORDONATE - dy; i++ ) {
if ( miny > sty[i] + dry[i+dy] )
miny = sty[i] + dry[i+dy];
}
fprintf( fout, "%lld", minx + miny );
fclose( fin );
fclose( fout );
return 0;
}