Pagini recente » Cod sursa (job #201985) | Istoria paginii utilizator/vladiana | Istoria paginii runda/dsfdsf/clasament | Cod sursa (job #1474069) | Cod sursa (job #474406)
Cod sursa(job #474406)
#include <stdio.h>
#include <algorithm>
#include <set>
#include <vector>
using namespace std;
#define f first
#define s second
int n, dx, dy;
vector <pair <int, int> > v[5];
int rez (int nr)
{
sort (v[nr].begin (), v[nr].end ());
int i, sol = 0;
set <int> h;
set <int> :: iterator it;
for (i = 0; i < v[nr].size (); i ++)
{
it = h.lower_bound (v[nr][i].s);
if (it == h.begin ())
{
h.insert (v[nr][i].s);
sol ++;
}
else
{
it --;
h.erase (it);
h.insert (v[nr][i].s);
}
}
return sol;
}
int main ()
{
freopen ("pachete.in", "r", stdin);
freopen ("pachete.out", "w", stdout);
scanf ("%d %d %d", &n, &dx, &dy);
int i, x, y;
for (i = 1; i <= n; i ++)
{
scanf ("%d %d", &x, &y);
x -= dx;
y -= dy;
if (x > 0 && y > 0)
v[1].push_back (make_pair (x, y));
if (x < 0 && y > 0)
v[2].push_back (make_pair (-x, y));
if (x < 0 && y < 0)
v[3].push_back (make_pair (-x, -y));
if (x > 0 && y < 0)
v[4].push_back (make_pair (x, -y));
}
printf ("%d\n", rez (1) + rez (2) + rez (3) + rez (4));
return 0;
}