Cod sursa(job #1556362)

Utilizator ASTELOTudor Enescu ASTELO Data 24 decembrie 2015 17:36:17
Problema Tribute Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include<cstdio>
#include<cmath>
#include<cstdlib>
#define nmax 50000
struct eu{int x,y;};
eu vcc[50001];
int v[50001],vc[50001],i,j,n,m,x,y,lin,col,lm,cm,s1,s2;
int main ()
{
freopen("tribute.in","r",stdin);
freopen("tribute.out","w",stdout);
scanf("%d%d%d",&n,&lin,&col);
for(i=1;i<=n;i++)
    {
    scanf("%d%d",&vcc[i].x,&vcc[i].y);
    v[vcc[i].x]++;
    vc[vcc[i].y]++;
    s1=s1+vcc[i].x;
    s2=s2+vcc[i].y;
    }
int difmax=0,dm1=0,poz,poz1,poz2,poz3;
poz=s1/n;
poz1=s2/n;
poz-=lin/2;
poz1-=col/2;
int min=2000000000,min1=200000000;
int k1=poz,k2=poz1;
for(j=k1-50;j<=k1+150;j++)
    {
        int s=0;
        poz=j;
        poz2=poz+lin;
        poz3=poz1+col;
        for(i=1;i<=n;i++)
            {
            if(vcc[i].x<=poz)
                s+=poz-vcc[i].x;
            if(vcc[i].x>=poz2)
                s+=vcc[i].x-poz2;
            /*if(vcc[i].y<=poz1)
                s+=poz1-vcc[i].y;
            if(vcc[i].y>=poz3)
                s+=(-poz3+vcc[i].y);*/
            }
        if(s<min)
            min=s;
        }
for(int l=k2-50;l<=k2+150;l++)
        {
        int s=0;
        poz1=l;
        poz2=poz+lin;
        poz3=poz1+col;
        for(i=1;i<=n;i++)
            {
            /*if(vcc[i].x<=poz)
                s+=poz-vcc[i].x;
            if(vcc[i].x>=poz2)
                s+=vcc[i].x-poz2;*/
            if(vcc[i].y<=poz1)
                s+=poz1-vcc[i].y;
            if(vcc[i].y>=poz3)
                s+=(-poz3+vcc[i].y);
            }
        if(s<min1)
            min1=s;
        }
printf("%d",min+min1);
return 0;
}