Pagini recente » Borderou de evaluare (job #1900774) | Cod sursa (job #2644270)
Utilizator |
Adia 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;
}