Pagini recente » Cod sursa (job #718238) | Cod sursa (job #1079004) | Cod sursa (job #2500937) | Cod sursa (job #390927) | Cod sursa (job #1274995)
#include <stdio.h>
#define INF 2000000000
#define MAXD 50000
long long lin[MAXD+1], col[MAXD+1], st[MAXD+1], dr[MAXD+1], sus[MAXD+1], jos[MAXD+1];
int main(){
long long n, dx, dy, i, x, y, cat, minx, miny;
FILE *fin, *fout;
fin=fopen("tribute.in", "r");
fout=fopen("tribute.out", "w");
fscanf(fin, "%lld%lld%lld", &n, &dx, &dy);
for(i=0; i<n; i++){
fscanf(fin, "%lld%lld", &x, &y);
lin[x]++;
col[y]++;
}
cat=lin[0];
for(i=1; i<=MAXD; i++){
st[i]=st[i-1];
st[i]+=cat;
cat+=lin[i];
}
cat=lin[MAXD];
for(i=MAXD-1; i>=0; i--){
dr[i]=dr[i+1];
dr[i]+=cat;
cat+=lin[i];
}
cat=col[0];
for(i=1; i<=MAXD; i++){
jos[i]=jos[i-1];
jos[i]+=cat;
cat+=col[i];
}
cat=col[MAXD];
for(i=MAXD-1; i>=0; i--){
sus[i]=sus[i+1];
sus[i]+=cat;
cat+=col[i];
}
minx=INF;
for(i=0; i<=MAXD-dx; i++){
if(minx>st[i]+dr[i+dx]){
minx=st[i]+dr[i+dx];
}
}
miny=INF;
for(i=0; i<=MAXD-dy; i++){
if(miny>jos[i]+sus[i+dy]){
miny=jos[i]+sus[i+dy];
}
}
fprintf(fout, "%lld\n", minx+miny);
fclose(fin);
fclose(fout);
return 0;
}