Cod sursa(job #2524632)

Utilizator betybety bety bety Data 15 ianuarie 2020 22:34:31
Problema Tribute Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.75 kb
#include <fstream>
using namespace std;
ifstream in("tribute.in");
ofstream out("tribute.out");
struct aa
{
    int x,y;
}v[50005];
int modul(int aa)
{
    if(aa<0)
        return -aa;
    return aa;
}
int main()
{
    int minnx,minny,maxxx,maxxy;
    minnx=minny=0x7fffffff;
    maxxx=maxxy=-100;
    int n,dx,dy;
    in>>n>>dx>>dy;
    for(int i=1;i<=n;++i)
        in>>v[i].x>>v[i].y;
    for(int i=1;i<=n;++i)
    {
        if(v[i].x<minnx)
            minnx=v[i].x;
        if(v[i].x>maxxx)
            maxxx=v[i].x;
        if(v[i].y<minny)
            minny=v[i].y;
        if(v[i].y>maxxy)
            maxxy=v[i].y;
    }
    long long int minim=10000000000000009;
    for(int i=minnx;i+dx-1<=maxxx;++i)
    for(int j=minny;j+dy-1<=maxxy;++j)
    {
        int k=i+dx-1,p=j+dy-1;
        long long int sum=0;
        for(int r=1;r<=n;++r)
        {
            int x1=v[r].x;
            int y1=v[r].y;
            if(x1<=k and x1>=i and j<=y1 and y1<=p)
                sum+=0;
            else if(x1>=k and y1<=j)
                sum+=modul(x1-k)+modul(y1-j);
            else if(x1>i and x1<k and y1<=j)
                sum+=modul(j-y1);
            else if(x1<=i and y1<=j)
                sum+=modul(i-x1)+modul(j-y1);
            else if(x1<=i and j<y1 and y1<p)
                sum+=(i-x1);
            else if(x1<=i and y1>=p)
                sum+=modul(i-x1)+modul(y1-p);
            else if(x1<k and x1>i and y1>=p)
                sum+=modul(p-y1);
            else if(x1>=k and y1>=p)
                sum+=modul(x1-k)+modul(y1-p);
            else if(x1>=k and j<y1 and y1<p)
                sum+=modul(x1-k);
        }
        if(sum<minim)
            minim=sum;
    }
    out<<minim;
    return 0;
}