Cod sursa(job #1434764)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 11 mai 2015 12:41:47
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<cstdio>
#include<algorithm>
#define x first
#define y second
using namespace std;
pair<int,pair<int,int> > p[3501];
int c[3501],b[3501],i,n,t,m,k,u,r,l;
int main() {
	freopen("cutii.in","r",stdin),
   	freopen("cutii.out","w",stdout),
   	scanf("%d%d",&n,&t);
   	while(t--) {
   		for(i=1;i<=n;i++)
			scanf("%d%d%d",&p[i].x,&p[i].y.x,&p[i].y.y),c[i]=b[i]=0;
		sort(p,p+n),u=b[1]=c[1]=1,c[0]=p[0].y.x=p[0].y.y=0;
		for(i=2;i<=n;i++) {
			l=0,r=u,m=(l+r)/2,k=-1;
			while(l<=r&&k==-1)
				if(p[c[m]].y.x<p[i].y.x&&p[c[m+1]].y.x>p[i].y.x&&p[c[m]].y.y<p[i].y.y&&p[c[m+1]].y.y>p[i].y.y)
					k=m;
				else
					if(p[c[m+1]].y.x<=p[i].y.x||p[c[m+1]].y.y<=p[i].y.y)
						l=m+1,m=(l+r)/2;
					else
						r=m-1,m=(l+r)/2;
			k=(k==-1?r:k),b[i]=k+1,c[k+1]=i,u=(u<k+1?(k+1):u);
		}
		for(m=0,i=1;i<=n;i++)
			m=m<b[i]?b[i]:m;
		printf("%d\n",m);
   	}
}