Cod sursa(job #1484845)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 septembrie 2015 00:53:34
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,t,a[3501][3501],m,w,i,j,k;
pair<int,pair<int,int> > p[3501];
int main() {
    freopen("cutii.in","r",stdin),freopen("cutii.out","w",stdout),scanf("%d%d",&n,&t);
    while(t--) {
        for(m=0,i=1;i<=n;i++)
            scanf("%d%d%d",&p[i].first,&p[i].second.first,&p[i].second.second);
        sort(p+1,p+n+1);
        for(i=1;i<=n;i++) {
            for(w=0,j=p[i].second.first-1;j;j-=j&-j)
            for(k=p[i].second.second-1;k;k-=k&-k)
                w=w<a[j][k]?a[j][k]:w;
            for(w++,j=p[i].second.first;j<=n;j+=j&-j)
            for(k=p[i].second.second;k<=n;k+=k&-k)
                a[j][k]=a[j][k]<w?w:a[j][k];
            m=m<w?w:m;
        }
        printf("%d\n",m);
        for(i=1;i<=n;i++)
        for(k=p[i].second.first;i<=n;k+=k&-k)
        for(j=p[i].second.second;j<=n;j+=j&-j)
            a[k][j]=0;
    }
}