Cod sursa(job #3265035)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 26 decembrie 2024 16:41:29
Problema Cutii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream cin("cutii.in");
ofstream cout("cutii.out");
int n,t,aib[3502][3502],maxi;
struct elem{
    int a,x,y;
    bool operator<(const elem& other)const{
        return a<other.a;
    }
}v[3502];
void update(int pi,int pj,int x){
    for(int i=pi;i<=n;i+=(-i)&i)
        for(int j=pj;j<=n;j+=(-j)&j)
            aib[i][j]=max(aib[i][j],x);
}
int query(int pi,int pj){
    int r=0;
    for(int i=pi;i>0;i-=(-i)&i)
        for(int j=pj;j>0;j-=(-j)&j)
            r=max(r,aib[i][j]);
    return r;
}
int main()
{
    cin>>n>>t;
    while(t--){
        for(int i=1;i<=n;i++)
            cin>>v[i].a>>v[i].x>>v[i].y;
        sort(v+1,v+n+1);
        memset(aib,0,sizeof(aib));
        maxi=0;
        for(int i=1;i<=n;i++){
            int inside=query(v[i].x-1,v[i].y-1);
            maxi=max(maxi,inside+1);
            update(v[i].x,v[i].y,inside+1);
        }
        cout<<maxi<<'\n';
    }
    return 0;
}