Cod sursa(job #2644270)

Utilizator adiaioanaAdia R. adiaioana Data 24 august 2020 09:40:53
Problema Cutii Scor 0
Compilator cpp-64 Status done
Runda prbd2 Marime 1.22 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("cutii.in");
ofstream cout("cutii.out");
pair <int, pair<int,int> > a[4000];
pair<int,int> v[4000];
int N,T, sirc[4000],lg[4000],lsir,lgm,poz, ind;
int caut(pair<int, int> val);
int main()
{
    ios_base :: sync_with_stdio(false);
    cin.tie(0);
    cin>>N>>T;
    while(T--)
    {
        for(int i=1; i<=N; ++i)
            cin>>a[i].first>>a[i].second.first>>a[i].second.second;
        sort(a+1,a+N+1);
        for(int i=1; i<=N; ++i)
            v[i]=a[i].second;

        lg[1]=1; sirc[1]=1;
        lsir=1; lgm=1;

        for(int i=2; i<=N; ++i)
        {
            ind=caut(v[i]);
            sirc[ind+1]=i;
            lg[i]=ind+1;
            lgm=max(lgm, lg[i]);
            lsir=max(lsir, lg[i]);
        }
        cout<<lgm<<'\n';
        for(int i=0; i<=N; ++i)
            lg[i]=sirc[i]=0;
    }
    return 0;
}

int caut(pair<int, int> val)
{
    int st=0, dr=lsir, mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[sirc[mij]]<val && v[sirc[mij+1]]>val)
            return mij;
        else if(v[sirc[mij+1]]>val)
            dr=mij-1;
        else st=mij+1;
    }
    return lsir;
}