Cod sursa(job #1481415)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 4 septembrie 2015 13:42:04
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>
#include<stdlib.h>
int i,n,t,l[2],m,k,e[3501],a[3501],b[3501],c[3501],d[3501],r[2],w,j,v;
typedef struct N {
    int x[2];
    struct N *l,*r;
}K;
K *u;
void I(K *&u,int d[],int k) {
    if(!u) {
        u=(K*)malloc(sizeof(K));
        u->x[0]=d[0],u->x[1]=d[1],u->l=u->r=NULL;
    }
    else if(d[k]<u->x[k])
        I(u->l,d,1-k);
    else
        I(u->r,d,1-k);
}
void P(K *&u,int l[],int r[],int k,int *w) {
    if(!u)
        return;
    if(l[0]<=u->x[0]&&r[0]>=u->x[0]&&l[1]<=u->x[1]&&r[1]>=u->x[1])
        (*w)++;
    if(l[k]<=u->x[k])
        P(u->l,l,r,1-k,w);
    if(r[k]>=u->x[k])
        P(u->r,l,r,1-k,w);
}
int main() {
    freopen("cutii.in","r",stdin),freopen("cutii.out","w",stdout),scanf("%d%d",&n,&t);
    for(;t;t--) {
    	for(i=1;i<=n;i++)
            scanf("%d%d%d",&e[i],&a[i],&b[i]),c[e[i]]=a[i],d[e[i]]=b[i];
        k=0,u=NULL,l[0]=c[1],l[1]=d[1],I(u,l,k),k=1-k,m=w=1;
        for(j=2;j<=n;j++)
            r[0]=c[j],r[1]=d[j],I(u,r,k),k=1-k,v=0,P(u,l,r,k,&v),k=1-k,w=v>w?(w+1):w,m=m<w?w:m;
        printf("%d\n",m);
	}
}