Pagini recente » Cod sursa (job #1681930) | redsnow_3 | Cod sursa (job #1255981) | Autentificare | Cod sursa (job #1640116)
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
struct eu{int x,y;};
eu v[50001];
int i,j,n,m,k,x,y;
set<int>:: iterator it;
set<int> s,s1;
bool sorting(eu a,eu b)
{
return a.x<b.x;
}
int main ()
{
freopen("pachete.in","r",stdin);
freopen("pachete.out","w",stdout);
scanf("%d%d%d",&n,&x,&y);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].x,&v[i].y);
sort(v+1,v+n+1,sorting);
v[0].x=-1;
for(i=1;i<=n;i++)
if(v[i].x>x)
{
k=i;
break;
}
for(i=k-1;i>=1;i--)
{
if(s.empty())
s.insert(v[i].y);
else
{
if(y>v[i].y)
{
it=s.lower_bound(v[i].y);
it--;
if(*it<y&&*it>v[i].y)
s.erase(*it);
s.insert(v[i].y);
}
else
{
it=s.lower_bound(v[i].y);
it--;
if(*it>y&&*it<v[i].y)
s.erase(*it);
s.insert(v[i].y);
}
}
}
int nr=0;
for(it=s.begin();it!=s.end();it++)
nr++;
for(i=k;i<=n;i++)
{
if(s1.empty())
s1.insert(v[i].y);
else
{
if(y>v[i].y)
{
it=s1.lower_bound(v[i].y);
it--;
if(*it<y&&*it>v[i].y)
s1.erase(*it);
s1.insert(v[i].y);
}
else
{
it=s1.lower_bound(v[i].y);
it--;
if(*it>y&&*it<v[i].y)
s1.erase(*it);
s1.insert(v[i].y);
}
}
}
for(it=s1.begin();it!=s1.end();it++)
nr++;
printf("%d",nr);
return 0;
}