Pagini recente » Cod sursa (job #2541352) | Cod sursa (job #236767) | Cod sursa (job #449359) | Cod sursa (job #802358) | Cod sursa (job #2502925)
#include <bits/stdc++.h>
#define x first
#define y second.first
#define z second.second
#define inf 1000000000
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int n,t,i,st,mid,dr,cnt,d[3600]; //d[i]=cea mai mica val in care se termina un subsir crescator
pair< int,pair<int,int> >v[3600];//de lungime i cu elementele parcurse pana acum
int main() {
fin>>n>>t;
while (t--) {
for (i=1;i<=n;i++) {
fin>>v[i].x>>v[i].y>>v[i].z;
d[i]=0;
}
sort(v+1,v+n+1);
v[n+1].x=v[n+1].y=v[n+1].z=inf;
d[1]=1;
cnt=1;
for (i=2;i<=n;i++) {
st=1; dr=cnt;
while (st<=dr) {
mid=(st+dr)/2;
if (v[d[mid]].y>v[i].y&&v[d[mid]].z>v[i].z)
dr=mid-1;
else
st=mid+1;
}
if (st>cnt)
cnt++;
d[st]=i;
}
fout<<cnt<<"\n";
}
return 0;
}