Cod sursa(job #2508708)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 12 decembrie 2019 19:53:26
Problema Cutii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
tuple <int,int,int> cutie;
set < tuple<int,int,int> > s;
int n,q,i,a,b,c;
int aib[3505][3505];
void update(int y, int Z,int maxx){
    for(; y<=n; y+=(y&-y))
        for(int z=Z; z<=n; z+=(z&-z))
            aib[y][z]=max(aib[y][z],maxx);
}
int query(int y, int Z){
    int r=0;
    for(; y; y-=(y&-y))
        for(int z=Z; z; z-=(z&-z))
            r=max(r,aib[y][z]);
    return r;
}
int main()
{
    fin>>n>>q;
    for(;q;q--){
            s.clear();
        for(i=1;i<=n;i++){
            fin>>a>>b>>c;
            s.insert(make_tuple(a,b,c));
        }
        int sol=-1;
        for(auto it: s){
            int x=query(get<0>(it),get<1>(it));
            sol=max(sol,x+1);
            update(get<0>(it),get<1>(it),x+1);
        }
        fout<<sol<<"\n";
        memset(aib,0,sizeof(aib));
    }
}