Cod sursa(job #13151)
#include <iostream>
#include <stdio.h>
using namespace std;
int nrde[50001][2];
int sume[50001][2];
int x,y,i,j,n,m;
int dx,dy;
int minc=1000000000,mint=1000000000;
int main()
{
freopen("tribute.in","r",stdin);
freopen("tribute.out","w",stdout);
scanf("%d %d %d\n", &n, &dx, &dy);
for ( i = 1; i <= n; i++ )
{
scanf("%d %d\n", &x, &y );
nrde[x][0]++;
nrde[y][1]++;
sume[0][0] += x;
sume[0][1] += y;
}
for ( i = 1; i <= 50001; i++ ) {
nrde[i][0] += nrde[i-1][0];
nrde[i][1] += nrde[i-1][1];
}
for ( i = 1; i <= 50001; i++ ) {
sume[i][0] = sume[i-1][0];
sume[i][1] = sume[i-1][1];
if ( i - dx - 1 >= 0 )
sume[i][0] += nrde[ i - dx - 1][0];
sume[i][0] -= ( n - nrde[i-1][0] );
if ( i - dy - 1 >= 0 )
sume[i][1] += nrde[ i - dy - 1 ][1];
sume[i][1] -= ( n- nrde[i-1][1] );
}
for ( i = 0; i <= 50001; i++ ) {
minc = min ( minc, sume[i][0] );
mint = min ( mint, sume[i][1] );
}
printf("%d\n", mint+minc);
return 0;
}