Cod sursa(job #1671363)

Utilizator andy1207Cioltan Andrei andy1207 Data 1 aprilie 2016 16:42:07
Problema Tribute Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.74 kb
#include<cstdio>
int v1[50001];
int v2[50001];
int vv[50001];
int main()
{
 int n,dx,dy,maxx,maxy,minx,miny,i,a,b,f,st,dr,min,j,s,t,min1;
 freopen("tribute.in","r",stdin);
 freopen("tribute.out","w",stdout);
 scanf("%d%d%d",&n,&dx,&dy);
 maxx=maxy=0;
 minx=miny=999999;
 for(i=1;i<=n;i++)
    {
     scanf("%d%d",&a,&b);
     v1[a]++;
     v2[b]++;
     if(a>maxx)
        maxx=a;
     if(b>maxy)
        maxy=b;
     if(a<minx)
        minx=a;
     if(b<miny)
        miny=b;
    }
 min=9999999;
 for(i=0;i+dx-1<=maxx;i++)
    {
     j=i+dx-1;
     ///i= inceput de interval
     ///j= sfarsit de interval
     ///i-----j
     s=0;
     st=0;///stanga
     for(f=i-1;f>=minx;f--)
        {
         if(v1[f]!=0)
            {
             st++;
             s+=(i-f)/*v1[f]*/;
            }
        }
     dr=0;///dreapta
     for(f=j+1;f<=maxx;f++)
        {
         if(v1[f]!=0)
            {
             dr++;
             s+=(f-j)/*v1[f]*/;
            }
        }
     //vv[i]+=s;
     if(s<min)
        min=s;
    }
 min1=99999999;
 for(i=0;i+dy-1<=maxy;i++)
    {
     j=i+dy-1;
     ///i= inceput de interval
     ///j= sfarsit de interval
     ///i-----j
     s=0;
     st=0;///sus
     for(f=i-1;f>=miny;f--)
        {
         if(v2[f]!=0)
            {
             st++;
             s+=(i-f)/*v2[f]*/;
            }
        }
     //t=s;
     //s=0;
     dr=0;///jos
     for(f=j+1;f<=maxy;f++)
        {
         if(v2[f]!=0)
            {
             dr++;
             s+=(f-j)/*v2[f]*/;
            }
        }
     //s+=t;
     if(s+min<min1)
        min1=s+min;
     //vv[i]+=s;
     //if(vv[i]<min)
        //min=vv[i];
    }
 printf("%d\n",min1);
return 0;
}