Cod sursa(job #7245)

Utilizator the_dragon_of_rockTzogorean Alex the_dragon_of_rock Data 21 ianuarie 2007 13:14:13
Problema Pachete Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 10-a Marime 2.26 kb
#include<fstream>
using namespace std;
int x[50000],y[50000];
int n,x0,y0,dist;

void citire()
{
     int i;
     ifstream in("pachete.in");
     in>>n;
     in>>x0>>y0;
     dist=0;
     int dx,dy;
     for (i=1;i<=n;i++)
         {
         in>>x[i]>>y[i];
         if (x[i]>x0)   
            dx=x[i]-x0;
         else
             dx=x0-x[i];
         if (y[i]>y0)
            dy=y[i]-y0;
         else
             dy=y0-y[i];
         if (dy+dx>dist)
            dist=dx+dy;   
         }
 }
 
int drumuri()
{
    int dr=0;
    int i,j,d,ddx,ddy,dx,dy,dd;
    int xx,yy;
    for (i=1;i<=n;i++)
        if (x[i]>=0)
           {
               if (x[i]>x0)   
                  dx=x[i]-x0;
               else
                   dx=x0-x[i];
               if (y[i]>y0)
                  dy=y[i]-y0;
               else
                   dy=y0-y[i];
               d=dy+dx;
               xx=x[i];
               yy=y[i];
               x[i]=-1;
               y[i]=-1;
               while(d<dist)
                       {
                       for (j=1;j<=n;j++)
                           if (x[j]>=0)
                              {
                                  if (x[j]>xx)   
                                     ddx=x[j]-xx;
                                  else
                                      ddx=xx-x[j];
                                  if (y[j]>yy)
                                     ddy=y[j]-yy;
                                  else
                                      ddy=yy-y[j];
                                  dd=ddy+ddx;
                                  if (dd+d<=dist)
                                     {
                                         xx=x[j];
                                         yy=y[j];
                                         x[j]=-1;
                                         y[j]=-1;
                                         j=0;
                                         d=d+dd;
                                     }
                              }
                       d=dist+1;
                       }
               dr++;
           }
return dr;
}
 



int main()
{
    citire();
    ofstream out("pachete.out");
    out<<drumuri();
    return 0;
}