Cod sursa(job #2508714)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 12 decembrie 2019 20:05:43
Problema Cutii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 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(int p1=y; p1<=n; p1+=(p1&-p1))
        for(int p2=z; p2<=n; p2+=(p2&-p2))
            aib[p1][p2]=max(aib[p1][p2],maxx);
}
int query(int y, int z){
   int r=0;
    for(int p1=y; p1; p1-=(p1&-p1))
        for(int p2=z; p2; p2-=(p2&-p2))
            r=max(r,aib[p1][p2]);

    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[i].first,v[i].second);
            sol=max(sol,x+1);
            update(v[i].first,v[i].second,x+1);
        }
        fout<<sol<<"\n";
        memset(aib,0,sizeof(aib));
    }
}