Pagini recente » Cod sursa (job #286389) | Cod sursa (job #300619) | Cod sursa (job #564319) | Cod sursa (job #354377) | Cod sursa (job #354374)
Cod sursa(job #354374)
#include <stdio.h>
#define DIM 50002
#define INF 2000000000
int Sx1[DIM], Sx2[DIM], Sy1[DIM], Sy2[DIM], X[DIM], Y[DIM];
int n, i, dx, dy, x, y, xMAX, yMAX, p, SxC, SyC;
long long MINx, MINy;
int main() {
FILE *f = fopen("tribute.in", "r");
FILE *g = fopen("tribute.out", "w");
fscanf(f, "%d %d %d", &n, &dx, &dy);
for (i = 1; i <= n; i++) {
fscanf(f, "%d %d", &x, &y);
X[x]++, Y[y]++;
if (x > xMAX)
xMAX = x;
if (y > yMAX)
yMAX = y;
}
Sx1[0] = X[0];
for (i = 1; i <= xMAX; i++)
Sx1[i] = Sx1[i-1] + X[i];
for (i = xMAX; i >= 0; i--)
Sx2[i] = Sx2[i+1] + X[i];
Sy1[0] = Y[0];
for (i = 1; i <= yMAX; i++)
Sy1[i] = Sy1[i-1] + Y[i];
for (i = yMAX; i >= 0; i--)
Sy2[i] = Sy2[i+1] + Y[i];
MINx = INF;
MINy = INF;
for (i = 0; i <= xMAX-dx; i++) {
SxC = Sx1[i] + Sx2[i+dx];
if (SxC < MINx)
MINx = SxC;
}
for (i = 0; i <= yMAX-dy; i++) {
SyC = Sy1[i] + Sy2[i+dy];
if (SyC < MINy)
MINy = SyC;
}
fprintf(g, "%lld", MINx + MINy);
fclose(f);
fclose(g);
return 0;
}