Pagini recente » Cod sursa (job #2415200) | Cod sursa (job #2044162) | Cod sursa (job #2510095) | Cod sursa (job #2004266) | Cod sursa (job #483407)
Cod sursa(job #483407)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("cutii.in");
ofstream out("cutii.out");
struct cutie{
int x;
int y;
int z;
};
cutie V[3505];
int L,N,P[3505];
struct cmp{
public :
inline bool operator()(const cutie&a,const cutie&b){return a.z>b.z;}
};
inline bool mare(const cutie &a,const cutie &b)
{
if(a.x>b.x&&a.y>b.y&&a.z>b.z)return 1;
return 0;
}
int search(cutie key)
{
int i,step=1;
while((step<<1)<=L)step<<=1;
for(i=0;step;step>>=1)
if(i+step<=L&&mare(key,V[P[i+step]]))
i+=step;
return i;
}
int main()
{
int T,i,l;
in>>N>>T;
while(T--)
{
for(i=0;i<=N+1;++i)P[i]=0;
for(i=1;i<=N;i++)
in>>V[i].x>>V[i].y>>V[i].z;
sort(V+1,V+N+1,cmp());
P[1]=1,L=1;
for(i=2;i<=N;i++)
{
l = search(V[i]);
if(P[l+1]==0)P[l+1]=i,L++;
else if(mare(V[P[l+1]],V[i]))
P[l+1]=i;
}
out<<L<<'\n';
}
return 0;
}