Cod sursa(job #1910031)

Utilizator VasilescuVasilescu Eliza Vasilescu Data 7 martie 2017 15:13:20
Problema Tribute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<cstdio>

using namespace std;

long long n,dx,dy,i,ax,ay,cx[50001],cy[50001],cont,dl[50001],dr[50001],solp,solx,soly,sol;
int main()
{
    FILE *fin ,*fout;
    fin=fopen("tribute.in","r");
    fout=fopen("tribute.out","w");

    fscanf(fin ,"%ld%ld%ld",&n,&dx,&dy);

    for(i=1;i<=n;i++)
    {
        fscanf(fin ,"%ld%ld",&ax,&ay);
        cx[ax]++;cy[ay]++;
    }

    cont=0;
    for(i=1;i<=50000;i++)
    { cont+=cx[i-1];
      dl[i]=dl[i-1]+cont;
    }
    cont=0;
    for(i=49999;i>=0;i--)
    { cont+=cx[i+1];
      dr[i]=dr[i+1]+cont;
    }

    solx=2000000000;
    for(i=0;i<=50000-dx;i++)
    { solp=dl[i]+dr[i+dx];
      solx=(solx<solp)?solx:solp;
    }

    cont=0;
    for(i=1;i<=50000;i++)
    { cont+=cy[i-1];
      dl[i]=dl[i-1]+cont;
    }

    cont=0;
    for(i=49999;i>=0;i--)
    { cont+=cy[i+1];
      dr[i]=dr[i+1]+cont;
    }

    soly=2000000000;
    for(i=0;i<=50000-dy;i++)
    { solp=dl[i]+dr[i+dy];
      soly=(soly<solp)?soly:solp;
    }

    sol=solx+soly;

    fprintf(fout,"%ld\n",sol);
    return 0;
}