Pagini recente » Cod sursa (job #2699070) | Cod sursa (job #874957) | Cod sursa (job #794681) | Cod sursa (job #908499) | Cod sursa (job #757638)
Cod sursa(job #757638)
#include<stdio.h>
#include<stdlib.h>
long int suma(long int *x,long int N,long int DX){
long int m=0,s=0,s1=0,i,x1,x2;
for(i=0;i<N;i++)
m+=x[i];
m=m/N;
for(i=0;i<N;i++){
s+=abs(x[i]-m);
s1+=abs(x[i]-m-1);
}
if(s>s1) x2=x1=m+1;
else x2=x1=m;
for(i=1;i<=DX;i++){
s=s1=0;
for(i=0;i<N;i++){
s+=abs(x[i]-x1+1);
s1+=abs(x[i]-x2-1);
}
if(s>s1) x2++;
else x1--;
}
s=s1=0;
for(i=0;i<N;i++){
if (abs(x[i]-x1)>abs(x[i]-x2)) s+=abs(x[i]-x2);
else s+=abs(x[i]-x1);
}
return s;
}
int main(){
long int N,DX,DY,*x,*y,x1,x2,y1,y2,i,s;
FILE *f=fopen("tribute.in","r"),*g=fopen("tribute.out","w");
fscanf(f,"%ld %ld %ld",&N,&DX,&DY);
x=malloc(N*sizeof(int));
y=malloc(N*sizeof(int));
for(i=0;i<N;i++)
fscanf(f,"%ld %ld",&x[i],&y[i]);
s=suma(y,N,DY)+suma(x,N,DX);
fprintf(g,"%ld",s);
fclose(f);
fclose(g);
return 0;
}