Cod sursa(job #971153)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 8 iulie 2013 17:21:28
Problema Pachete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream f("pachete.in");
ofstream g("pachete.out");
int n,fx,fy,vx[50005],vy[50005],k1,k2,k3,k4;
double z1[50005],z2[50005],z3[50005],z4[50005];
void Read()
{ int i;
  f>>n>>fx>>fy;
  for(i=1;i<=n;i++)
  { f>>vx[i]>>vy[i];
     vx[i]-=fx;
     vy[i]-=fy;
  }
}
double dist(int x1,int y1,int x2,int y2)
{ double d;
   d=((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2));
   d=(double) sqrt(d);
 return d;
}
void Solve()
{ double sn; int i,sol=0;
    k1=0; k2=0; k3=0; k4=0;
  for(i=1;i<=n;i++)
  {  sn=(double) dist(vx[i],vy[i],vx[i],0)/dist(vx[i],vy[i],0,0);;
     if (vx[i]>=0 && vy[i]>=0) {k1++; z1[k1]=sn;}
     if (vx[i]>=0 && vy[i]<0)  {k2++; z2[k2]=sn;}
     if (vx[i]<0 && vy[i]<=0)  {k3++; z3[k3]=sn;}
     if (vx[i]<0 && vy[i]>0)   {k3++; z4[k4]=sn;}
  }
 sort(z1+1,z1+k1+1);
 sort(z2+1,z2+k2+1);
 sort(z3+1,z3+k3+1);
 sort(z4+1,z4+k4+1);

 for(i=1;i<=k1;i++)
  if (z1[i]-z1[i-1]>1e-9) sol++;
 for(i=1;i<=k2;i++)
  if (z2[i]-z2[i-1]>1e-9) sol++;
 for(i=1;i<=k3;i++)
  if (z3[i]-z3[i-1]>1e-9) sol++;
 for(i=1;i<=k4;i++)
  if (z4[i]-z4[i-1]>1e-9) sol++;
g<<sol;
}
int main()
{ Read();
  Solve();
    return 0;
}