Cod sursa(job #2679948)

Utilizator cezarinfoTulceanu Cezar cezarinfo Data 2 decembrie 2020 00:05:03
Problema Tribute Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<cstdio>
using namespace std;
FILE*in=fopen("tribute.in","r");
FILE*out=fopen("tribute.out","w");
int n,dx,dy,i,x,y,sx[50003],sy[50003],ssx[50003],ssy[50003],ctx[50003],cty[50003],ss,sd;
long long minnx=300000000,nr,minny=300000000;
int main()
{
    fscanf(in,"%d%d%d",&n,&dx,&dy);
    for(i=1;i<=n;i++)
    {
        fscanf(in,"%d%d",&x,&y);
        ssx[x]++;
        ssy[y]++;
    }
    ctx[0]=ssx[0];
    cty[0]=ssy[0];
    for(i=1;i<=50000;i++)
    {
        ctx[i]=ctx[i-1]+ssx[i];
        cty[i]=cty[i-1]+ssy[i];
        sx[i]=(long long)sx[i-1]+ssx[i]*i;
        sy[i]=(long long)sy[i-1]+ssy[i]*i;
    }
    for(i=0;i+dx<=50000;i++)
    {
        nr=(long long)ctx[i]*i-sx[i]+sx[50000]-sx[i+dx]-(i+dx)*(n-ctx[i+dx]);
        if(nr<minnx)
        {
            minnx=nr;
        }
    }
    for(i=0;i+dy<=50000;i++)
    {
        nr=(long long)cty[i]*i-sy[i]+sy[50000]-sy[i+dy]-(i+dy)*(n-cty[i+dy]);
        if(nr<minny)
        {
            minny=nr;
        }
    }
    fprintf(out,"%lld",minnx+minny);
}