Cod sursa(job #2892096)

Utilizator NutaAlexandruASN49K NutaAlexandru Data 20 aprilie 2022 19:11:08
Problema Cutii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#import<fstream>
#import<algorithm>
#import<cstring>
using namespace std;
ifstream cin("cutii.in");
ofstream cout("cutii.out");
struct trei
{
    int x,y,z;
};
trei a[3501];
int aib[3501][3501];
int lb(int x)
{
    return x&(-x);
}
int n;
void update(int col,int lin,int val)
{
    for(int i=lin;i<=n;i+=lb(i))
    {
        for(int j=col;j<=n;j+=lb(j))
        {
            aib[j][i]=max(aib[j][i],val);
        }
    }
}
int query(int col,int lin)
{
    int rez=0;
    for(int i=lin;i;i-=lb(i))
    {
        for(int j=col;j;j-=lb(j))
        {
            rez=max(aib[j][i],rez);
        }
    }
    return rez;
}
main()
{
    int tt;
    cin>>n>>tt;
    while(tt--)
    {
        memset(aib,0,sizeof(aib));
        for(int i=1;i<=n;i++)
        {
            cin>>a[i].x>>a[i].y>>a[i].z;
        }
        sort(a+1,a+n+1,[](trei a,trei b){return a.z<b.z;});
        int rez=0;
        for(int i=1;i<=n;i++)
        {
            int x=query(a[i].x,a[i].y)+1;
            rez=max(rez,x);
            update(a[i].x,a[i].y,x);
        }
        cout<<rez<<'\n';
    }
}