Cod sursa(job #500477)

Utilizator shitprogrammingProgramming Shit shitprogramming Data 12 noiembrie 2010 12:09:32
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <set>
#include <algorithm>

using namespace std;

set<pair<int,int> > arb;
set<pair<int,int> >::iterator it1,it2,it;
int n,i,x,y;

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

	scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
		scanf("%d%d",&x,&y);
        it=arb.upper_bound(make_pair(x,y));
        if(it!=arb.end()&&it->second>y)
        {
			printf("-1\n");
            continue;
        }
        if(arb.size())
        {
			it1=it;
			while(it1!=arb.begin())
			{
				it2=it1;
				--it2;
				if(it2->second>=y) break;
				it1=it2;
			}
			arb.erase(it1,it);
		}
        arb.insert(make_pair(x,y));
        printf("%d\n",arb.size());
    }

    return 0;
}