Pagini recente » Cod sursa (job #2781463) | Cod sursa (job #3241188) | Cod sursa (job #2889303) | Cod sursa (job #2292603) | Cod sursa (job #2644391)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
const short NMAX = 3501;
struct cutie{int a,b,c;};
int n;
cutie v[NMAX];
vector<int> lastPos[NMAX];
bool cmp(cutie x, cutie y){
return x.a<y.a || (x.a==y.a && (x.b<y.b || (x.b==y.b && x.c<y.c)));
}
bool someless(int pos1,int pos2){
for(auto it : lastPos[pos1])
if(v[it].b<v[pos2].b && v[it].c<v[pos2].c)
return true;
return false;
}
int getLen(int p){
int l=1,r=n,ans=0;
while(l<=r){
int m=(l+r+1)/2;
if(someless(m,p)){
l=m+1;
ans=m;
}
else r=m-1;
}
lastPos[ans+1].push_back(p);
return ans+1;
}
void testt(){
int ans=0;
for(int i=1;i<=n;i++){
fin>>v[i].a>>v[i].b>>v[i].c;
}
sort(v+1,v+n+1,cmp);
for(int cnt=1;cnt<=n;cnt++){
ans=max(ans,getLen(cnt));
}
fout<<ans<<'\n';
for(int i=0;i<=n;i++)
lastPos[i].clear();
}
int main()
{
ios_base::sync_with_stdio(false); fin.tie(0); fout.tie(0);
int k;
fin>>n>>k;
while(k--)
testt();
return 0;
}