Cod sursa(job #1306082)

Utilizator heracleRadu Muntean heracle Data 30 decembrie 2014 15:13:19
Problema Tribute Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>

FILE* in=fopen("tribute.in","r");
FILE* out=fopen("tribute.out","w");

const int Q=50002;
int n,l,c;

struct point{
    int x,y;
}v[Q];

int ver(int a, int b)
{
    if(a<0 || b<0 || a+l>50000 || b+c>50000)
        return 2000000000;

    int rez=0;

    for(int i=1; i<=n; i++)
    {
        if(a>v[i].x)
        {
            rez+=a-v[i].x;
        }
        if(a+l<v[i].x)
        {
            rez+=v[i].x-a-l;
        }

        if(b>v[i].y)
            rez+=b-v[i].y;
        if(b+c<v[i].y)
            rez+=v[i].y-b-c;
    }

    return rez;


}

int main()
{
    fscanf(in,"%d%d%d",&n,&l,&c);

    int sx=0,sy=0;

    for(int i=1; i<=n; i++)
    {
        fscanf(in,"%d%d",&v[i].x,&v[i].y);
        sx+=v[i].x;
        sy+=v[i].y;
    }

    int rez=2000000000;

    int act;

    for(int k=-10; k<=10; k++)
    {
        for(int t=-10; t<=10; t++)
        {
            act=ver(sx/n-l/2+k,sy/n-c/2+t);
            if(act<rez)
                rez=act;
        }
    }

    fprintf(out,"%d",rez);


    return 0;
}