Pagini recente » Cod sursa (job #672028) | Cod sursa (job #2483417) | Cod sursa (job #500856) | Cod sursa (job #1012280) | Cod sursa (job #230056)
Cod sursa(job #230056)
#include<stdio.h>
#define INF 1<<30 ;
int rez,min,a,b,i,S,n,dx,dy,maxx,maxy,x[50111],y[50111],vix[50111],viy[50111];
int main(){
FILE *f=fopen("tribute.in","r");
fscanf(f,"%d %d %d",&n,&dx,&dy);
maxx=maxy=-1;
for(i=1;i<=n;i++){
fscanf(f,"%d %d",&x[i],&y[i]);
vix[x[i]]++;
if(x[i]>maxx)
maxx=x[i];
viy[y[i]]++;
if(y[i]>maxy)
maxy=y[i];
}
fclose(f);
for(i=1;i<=maxx;i++)
vix[i]+=vix[i-1];
int q=dx+x[1];
for(i=1;i<=n;i++){
if(x[i]>q)
S+=x[i]-q;
}
min=INF;
for(i=x[1]+1;i+dx<=maxx;i++){
a=i;
b=i+dx;
S+=vix[a-1];
S-=(n - vix[ (b-1) ]);
// q=1;
if(S<min)
min=S;
}
rez=min;
min=INF;
for(i=1;i<=maxy;i++)
viy[i]+=viy[i-1];
q=dy+y[1];
S=0;
for(i=1;i<=n;i++){
if(y[i]>q)
S+=y[i]-q;
}
min=INF;
for(i=y[1]+1;i+dy<=maxy;i++){
a=i;
b=i+dy;
S+=viy[a-1];
S-=(n - viy[ (b-1) ]);
// q=1;
if(S<min)
min=S;
}
FILE *g=fopen("tribute.out","w");
rez+=min;
fprintf(g,"%d",rez);
fclose(g);
return 0;
}