Cod sursa(job #3156051)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 10 octombrie 2023 14:49:54
Problema Cutii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("cutii.in");
ofstream G("cutii.out");
struct P {
    int x,y,z;
    bool operator<(P b) const {
        return x<b.x;
    }
};
int t,n,i,b;
P a[3505];
vector<int> v[3505];
bool O(int p,int i)
{
    for(int j:v[p])
        if(a[j].y<a[i].y&&a[j].z<a[i].z)
            return 1;
    return 0;
}
int R(int i)
{
    int s=1,d=n,m,l=0;
    while(s<=d) {
        m=(s+d)>>1;
        if(O(m,i))
            s=m+1,l=m;
        else
            d=m-1;
    }
    v[l+1].push_back(i);
    return l+1;
}
int main()
{
    for(F>>n>>t;t;--t) {
        for(b=0,i=1;i<=n;++i)
            v[i].clear();
        for(i=1;i<=n;++i)
            F>>a[i].x>>a[i].y>>a[i].z;
        sort(a+1,a+n+1);
        for(i=1;i<=n;++i)
            b=max(b,R(i));
        G<<b<<'\n';
    }
    return 0;
}