Pagini recente » Cod sursa (job #2930344) | Cod sursa (job #295812) | Cod sursa (job #12138) | Cod sursa (job #249315) | Cod sursa (job #2586843)
#include <bits/stdc++.h>
#define NMAX 50010
#define inf 50000000
#define N 50005
using namespace std;
ifstream fin("tribute.in");
ofstream fout("tribute.out");
int n,dx,dy,rasp;
int colst[NMAX],coldr[NMAX],linsus[NMAX],linjos[NMAX],col[NMAX],lin[NMAX];
struct point
{
int x,y;
};
point v[NMAX];
int main()
{
fin>>n>>dx>>dy;
for(int i=1;i<=n;i++)
{
fin>>v[i].x>>v[i].y;
v[i].x++;
v[i].y++;
//N=max(N,max(v[i].x,v[i].y));
col[v[i].x]++;
lin[v[i].y]++;
}
int nrpct=0,x=0;
for(int i=1;i<=N;i++)
{
x=col[i];
colst[i]=colst[i-1]+nrpct;
nrpct+=x;
}
nrpct=0;
x=0;
for(int i=N;i>=1;i--)
{
x=col[i];
coldr[i]=coldr[i+1]+nrpct;
nrpct+=x;
}
nrpct=0;
x=0;
for(int i=N;i>=1;i--)
{
x=lin[i];
linsus[i]=linsus[i+1]+nrpct;
nrpct+=x;
}
nrpct=0;
x=0;
for(int i=1;i<=N;i++)
{
x=lin[i];
linjos[i]=linjos[i-1]+nrpct;
nrpct+=x;
}
for(int i=1;i<=N;i++)
{
if(i+dy<=N)lin[i]=linjos[i]+linsus[i+dy];
else lin[i]=inf;
if(i+dx<=N)col[i]=colst[i]+coldr[i+dx];
else col[i]=inf;
}
sort(lin+1,lin+N+1);
sort(col+1,col+N+1);
fout<<lin[1]+col[1];
}