Cod sursa(job #1556333)

Utilizator ASTELOTudor Enescu ASTELO Data 24 decembrie 2015 16:53:10
Problema Tribute Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<cstdio>
#define nmax 50000
struct eu{int x,y;};
eu vcc[50001];
int v[50002],vc[50002],i,j,n,m,x,y,lin,col,lm,cm;
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]++;
    }
for(i=1;i<=nmax;i++)
    {
    v[i]=v[i]+v[i-1];
    vc[i]=vc[i]+vc[i-1];
    }
int difmax=0,dm1=0,poz,poz1,poz2,poz3;
for(i=1;i+lin<=nmax+1;i++)
    if(v[i+lin]-v[i-1]>difmax)
        {
        difmax=v[i+lin]-v[i-1];
        poz=i;
        }
for(i=1;i+col<=nmax+1;i++)
    if(vc[i+col]-vc[i-1]>dm1)
        {
        dm1=vc[i+col]-vc[i-1];
        poz1=i;
        }
int s=0;
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);
    }
printf("%d",s);
return 0;
}