Pagini recente » Cod sursa (job #1786838) | Cod sursa (job #2314464) | Cod sursa (job #2687629) | Cod sursa (job #2080936) | Cod sursa (job #1781870)
#include <cstdio>
#include <algorithm>
const int MAX_N = 50000;
int px1[1+MAX_N];
int py1[1+MAX_N];
int px2[1+MAX_N];
int py2[1+MAX_N];
int main() {
int n, x, y, x1, x2, y1, y2, dx, dy;
FILE *fin = fopen("tribute.in", "r");
fscanf(fin, "%d%d%d", &n, &dx, &dy);
x1 = 1000000;
y1 = 1000000;
x2 = 0;
y2 = 0;
for(int i = 0; i < n; i++) {
fscanf(fin, "%d%d", &x, &y);
px1[x]++;
py1[y]++;
px2[x]++;
py2[y]++;
if(x < x1)
x1 = x;
if(x > x2)
x2 = x;
if(y < y1)
y1 = y;
if(y > y2)
y2 = y;
}
fclose(fin);
int np, p;
np = 0;
for(int i = x1; i <= x2; i++) {
p = px1[i];
if(i > x1)
px1[i] = px1[i - 1] + np;
else
px1[i] = 0;
np = np + p;
}
np = 0;
for(int i = x2; i >= x1; i--) {
p = px2[i];
if(i < x2)
px2[i] = px2[i + 1] + np;
else
px2[i] = 0;
np = np + p;
}
np = 0;
for(int i = y1; i <= y2; i++) {
p = py1[i];
if(i > y1)
py1[i] = py1[i - 1] + np;
else
py1[i] = 0;
np = np + p;
}
np = 0;
for(int i = y2; i >= y1; i--) {
p = py2[i];
if(i < y2)
py2[i] = py2[i + 1] + np;
else
py2[i] = 0;
np = np + p;
}
int minX, minY;
minX = minY = 1000000000;
if(x1 > x2 - dx)
minX = 0LL;
if(y1 > y2 - dy)
minY = 0LL;
for(int i = x1; i <= x2 - dx; i++)
if(px1[i] + px2[i + dx] < minX)
minX = px1[i] + px2[i + dx];
for(int i = y1; i <= y2 - dy; i++) {
if(py1[i] + py2[i + dy] < minY)
minY = py1[i] + py2[i + dy];
}
FILE *fout = fopen("tribute.out", "w");
fprintf(fout, "%d", minX + minY);
fclose(fout);
return 0;
}