Pagini recente » Cod sursa (job #695252) | Cod sursa (job #1861708) | Cod sursa (job #2625907) | Cod sursa (job #1680059) | Cod sursa (job #2644390)
#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 noless(int pos1,int pos2){
for(auto it : lastPos[pos1])
if(v[it].a<=v[pos2].a && v[it].b<=v[pos2].b && v[it].c<=v[pos2].c)
return false;
return true;
}
int getLen(int p){
int l=0,r=p;
while(l<r){
int m=(l+r+1)/2;
if(noless(m,p)){
l=m+1;
}
else r=m-1;
}
lastPos[r].push_back(p);
return r;
}
void testt(){
int ans=0;
for(int i=0;i<n;i++){
fin>>v[i].a>>v[i].b>>v[i].c;
}
sort(v,v+n,cmp);
for(int cnt=0;cnt<n;cnt++){
ans=max(ans,getLen(cnt));
}
fout<<ans+2<<'\n';
}
int main()
{
ios_base::sync_with_stdio(false); fin.tie(0); fout.tie(0);
int k;
fin>>n>>k;
while(k--)
testt();
return 0;
}