Pagini recente » Cod sursa (job #380690) | Cod sursa (job #927157) | Cod sursa (job #1195131) | Cod sursa (job #2941972) | Cod sursa (job #475330)
Cod sursa(job #475330)
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
#define pb push_back
#define mp make_pair
#define sc second
#define fs first
#define DIM 5
vector <pair <int,int> > v[DIM];
int n,sx,sy,nrt;
set <int> a;
inline int cad (int x,int y)
{
if (x>0 && y>0)
return 1;
if (x<0 && y>0)
return 2;
if (x<0 && y<0)
return 3;
if (x>0 && y<0)
return 4;
return 0;
}
void read ()
{
int i,x,y;
scanf ("%d%d%d",&n,&sx,&sy);
for (i=1; i<=n; ++i)
{
scanf ("%d%d",&x,&y);
x-=sx; y-=sy;
v[cad (x,y)].pb (mp (abs (x),abs (y)));
}
}
inline int calc (int cad)
{
vector <pair <int,int> > :: iterator itv;
set <int> :: iterator ita;
int nrc;
nrc=0;
a.clear ();
sort (v[cad].begin (),v[cad].end ());
for (itv=v[cad].begin (); itv!=v[cad].end (); ++itv)
{
ita=a.lower_bound (itv->sc);
if (ita==a.begin ())
++nrc;
else
a.erase (--ita);
a.insert (itv->sc);
}
return nrc;
}
void solve ()
{
int i;
for (i=1; i<DIM; ++i)
nrt+=calc (i);
printf ("%d",nrt);
}
int main ()
{
freopen ("pachete.in","r",stdin);
freopen ("pachete.out","w",stdout);
read ();
solve ();
return 0;
}