Cod sursa(job #474406)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 3 august 2010 18:15:46
Problema Pachete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#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;
}