Cod sursa(job #2838728)

Utilizator db_123Balaban David db_123 Data 24 ianuarie 2022 15:34:42
Problema Cutii Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>

using namespace std;

ifstream cin("cutii.in");
ofstream cout("cutii.out");

class Info{
public:
    int x;
    int y;
    int z;
};

bool cmp(Info a,Info b){
    return a.z<b.z;
}

int n,t;
vector<Info> v;

bool canPlaceInside(Info a,Info b){
    if(a.x<b.x && a.y<b.y && a.z<b.z){
        return true;
    }
    return false;
}

int howManyBoxes(){
    vector<int> dp(n+1);
//    cout<<"sortare: ";
//    for(int i=1;i<=n;i++){
//        cout<<v[i].x<<" "<<v[i].y<<" "<<v[i].z<<"\n";
//    }
//    cout<<"\n\n";
    for(int i=1;i<=n;i++){
        dp[i]=1;
    }
    for(int i=2;i<=n;i++){
        for(int j=1;j<i;j++){
            if(canPlaceInside(v[j],v[i])){
                dp[i]=max(dp[i],dp[j]+1);
            }
        }
    }
    int rez=0;
    for(int i=1;i<=n;i++){
        rez=max(rez,dp[i]);
    }
    return rez;
}

void read(){
    cin>>n>>t;
    v.resize(n+1);

    queue<int> rez;
    for(int i=1;i<=t;i++){
//        v.clear();

        for(int j=1;j<=n;j++){
            cin>>v[j].x>>v[j].y>>v[j].z;
        }
        sort(v.begin()+1,v.end(),cmp);
        rez.push(howManyBoxes());
    }
    while(!rez.empty()){
        cout<<rez.front()<<"\n";
        rez.pop();
    }
}

int main() {

    read();
    return 0;
}