Pagini recente » Cod sursa (job #2077648) | Cod sursa (job #336444) | Cod sursa (job #861431) | Cod sursa (job #2084766) | Cod sursa (job #354664)
Cod sursa(job #354664)
#include <stdio.h>
#define DIM 100500
#define INF 4000000000LL
long long LX[DIM], RX[DIM], LY[DIM], RY[DIM], AX[DIM], AY[DIM], BX[DIM], BY[DIM];
long long n, i, dx, dy, x, y, xMAX, yMAX, solY, solX;
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);
AX[x]++, AY[y]++;
if (x > xMAX)
xMAX = x;
if (y > yMAX)
yMAX = y;
}
BX[0] = AX[0];
for (i = 1; i <= xMAX; i++)
BX[i] = BX[i-1] + AX[i];
BY[0] = AY[0];
for (i = 1; i <= yMAX; i++)
BY[i] = BY[i-1] + AY[i];
for (i = 1; i <= xMAX; i++)
LX[i] = LX[i-1] + BX[i-1];
for (i = 1; i <= yMAX; i++)
LY[i] = LY[i-1] + BY[i-1];
for (i = xMAX-1; i >= 0; i--)
RX[i] = RX[i+1] + BX[xMAX] - BX[i];
for (i = yMAX-1; i >= 0; i--)
RY[i] = RY[i+1] + BY[yMAX] - BY[i];
solX = solY = INF;
for (i = 0; i <= xMAX; i++)
if (LX[i] + RX[i+dx] < solX)
solX = LX[i] + RX[i+dx];
for (i = 0; i <= yMAX; i++)
if (LY[i] + RY[i+dy] < solY)
solY = LY[i] + RY[i+dy];
fprintf(g, "%d", solX + solY);
fclose(f);
fclose(g);
return 0;
}