Pagini recente » Cod sursa (job #1330566) | Cod sursa (job #1760714) | Clasament dupa rating | Cod sursa (job #2804920) | Cod sursa (job #2190900)
#include <iostream>
#include <stdio.h>
using namespace std;
int dx;
const int NMAX = 51000;
const int X = 51002;
int nrst[X], nrdr[X], vx[X], vy[X];
long long sumst[X], sumdr[X];
long long functie () {
int i;
long long minim;
for (i = 1; i <= NMAX; i++)
nrst[i] = nrst[i - 1] + vx[i - 1];
for (i = 1; i <= NMAX; i++)
sumst[i] = sumst[i - 1] + nrst[i];
for (i = NMAX; i >= 0; i--)
nrdr[i] = nrdr[i + 1] + vx[i + 1];
for (i = NMAX; i >= 0; i--)
sumdr[i] = sumdr[i + 1] + nrdr[i];
minim = 50001;
for (i = 0; i + dx - 1<= NMAX; i++)
if (sumst[i] + sumdr[i + dx] < minim)
minim = sumst[i] + sumdr[i + dx];
return minim;
}
int main() {
freopen ("tribute.in", "r", stdin);
freopen ("tribute.out", "w", stdout);
int n, px, dy, i, py;
long long s1, s2;
scanf ("%d%d%d", &n, &dx, &dy);
for (i = 1; i <= n; i++) {
scanf ("%d%d", &px, &py);
vx[px]++;
vy[py]++;
}
s1 = functie ();
for (i = 0; i <= NMAX; i++) {
nrst[i] = sumst[i] = sumdr[i] = nrdr[i] = vx[i] = 0;
vx[i] = vy[i];
}
dx = dy;
s2 = functie();
printf ("%lld", s1 + s2);
return 0;
}