Cod sursa(job #2508710)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 12 decembrie 2019 19:57:01
Problema Cutii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
pair <int,int> v[3505];
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--){
        for(i=1;i<=n;i++){
            fin>>a>>b>>c;
            v[a]={b,c};
        }
        int sol=-1;
        for(int i=1;i<=n;i++){
            int x=query(v[a].first,v[a].second);
            sol=max(sol,x+1);
            update(v[a].first,v[a].second,x+1);
        }
        fout<<sol<<"\n";
        memset(aib,0,sizeof(aib));
    }
}