Cod sursa(job #11234)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 30 ianuarie 2007 22:11:42
Problema Pachete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define mp make_pair
#define pb push_back
#define sz size()
#define f first
#define s second
#define nmax 65536

int n,sol,x,y;
vector <pair <int,int> > P[4];
set <int> S;
set <int> :: iterator it;

int main()
{
	freopen("pachete.in","r",stdin);
	freopen("pachete.out","w",stdout);

	scanf("%d",&n);
	scanf("%d %d",&x,&y);
	int ii,j,i;
	FOR(ii,0,n)
	{
		scanf("%d %d",&i,&j);
		if(i>x)
			if(j>y)
				P[0].pb(mp(i,j));
			else
				P[1].pb(mp(i,-j));
		else
			if(j>y)
				P[2].pb(mp(-i,j));
			else
				P[3].pb(mp(-i,-j));
	}
	FOR(i,0,4)
		sort(P[i].begin(),P[i].end());
	FOR(j,0,4)
	{
		S.clear();
		FOR(i,0,P[j].sz)
		{
//		fprintf(stderr,"%d %d\n",P[j][i].f,P[j][i].s);
			it=S.lower_bound(-P[j][i].s);
			if(it!=S.end())
				S.erase(it);
			S.insert(-P[j][i].s);
		}
//		fprintf(stderr,"\n");
		sol+=S.sz;
	}
	printf("%d\n",sol);
	return 0;
}