Pagini recente » Cod sursa (job #835734) | Cod sursa (job #1164924) | Cod sursa (job #597044) | Cod sursa (job #1532998)
#include <fstream>
#include <cstring>
#define DIM 50005
using namespace std;
ifstream fin("tribute.in");
ofstream fout("tribute.out");
int N,DX,DY;
int FX[DIM],D[DIM],S[DIM],NRS[DIM],NRD[DIM],FY[DIM];
int maxx,maxy,minx=0x3f3f3f3f,miny=0x3f3f3f3f;
int solx,soly;
int main(){
fin >> N >> DX >> DY;
solx = soly = 0x3f3f3f3f;
for(int i=1;i<=N;i++){
int x,y;
fin >> x >> y;
FX[x]++;
FY[y]++;
maxx=max(maxx,x);
maxy=max(maxy,y);
minx=min(minx,x);
miny=min(miny,y);
}
for(int i=minx;i<=maxx;i++){
S[i] = S[i-1] + NRS[i-1];
NRS[i] = NRS[i-1] + FX[i];
}
for(int i=maxx;i>=minx;i--){
D[i] = D[i+1] + NRD[i+1];
NRD[i] = NRD[i+1] + FX[i];
}
for(int i=minx;i + DX<=maxx;i++)
solx = min(solx,S[i] + D[i + DX]);
memset(S,0,sizeof(S));
memset(D,0,sizeof(D));
memset(NRS,0,sizeof(NRS));
memset(NRD,0,sizeof(NRD));
for(int i=miny;i<=maxy;i++){
S[i] = S[i-1] + NRS[i-1];
NRS[i] = NRS[i-1] + FY[i];
}
for(int i=maxy;i>=miny;i--){
D[i] = D[i+1] + NRD[i+1];
NRD[i] = NRD[i+1] + FY[i];
}
for(int i=miny;i+DY<=maxy;i++)
soly = min(soly,S[i] + D[i+DY]);
fout << solx + soly << "\n";
}