Cod sursa(job #2644611)

Utilizator Chirac_MateiChiriac Matei Chirac_Matei Data 25 august 2020 10:45:18
Problema Cutii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("cutii.in");
ofstream fout ("cutii.out");
struct pct
{
    int x,y,z;
    bool operator<(pct b) const
    {
        return x<b.x;
    }
};
int t,n,i,ans;
pct a[3505];
vector<int> v[3505];
bool ok(int p, int i)
{
    for(int it : v[p])
    {
        if(a[it].y<a[i].y && a[it].z<a[i].z)
            return true;
    }
    return false;
}
int rez(int i)
{
    int st,dr,mij,last=0;

    st=1;
    dr=n;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(ok(mij, i))
        {
            st=mij+1;
            last=mij;
        }
        else
            dr=mij-1;
    }

    v[last+1].push_back(i);
    return last+1;
}
int main()
{
    fin>>n>>t;
    while(t)
    {
        t--;
        ans=0;

        for(i=1;i<=n;i++)
            v[i].clear();

        for(i=1;i<=n;i++)
            fin>>a[i].x>>a[i].y>>a[i].z;
        sort(a+1, a+n+1);

        for(i=1;i<=n;i++)
        {
            ans=max(ans, rez(i));
        }

        fout<<ans<<'\n';
    }
    return 0;
}