Cod sursa(job #2774654)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 septembrie 2021 10:28:58
Problema Cutii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,t,a[3503][3503],m,w,i,j,k;
pair<int,pair<int,int> > p[3503];
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;k<=n;k+=k&-k)
                for(j=p[i].second.second;j<=n;j+=j&-j)
                    a[k][j]=0;
    }
}