Pagini recente » Cod sursa (job #2064542) | Cod sursa (job #2576423) | Cod sursa (job #260465) | Cod sursa (job #2910903) | Cod sursa (job #167191)
Cod sursa(job #167191)
#include<fstream.h>
ifstream fin("cutii.in");
ofstream fout("cutii.out");
struct dim
{int x,y,z;} v[3501];
int n,t,d[3501];
int cmp(dim a,dim b)
{if(a.z<b.z) return 0;
if(a.z>b.z) return 1;
if(a.x<b.x) return 0;
if(a.x>b.x) return 1;
if(a.y<b.y) return 0;
return 1;
}
int poz(int li,int ls)
{dim aux;
int i=li,j=ls,i1[2]={0,1},j1[2]={-1,0},k=0;
while(i<j)
{if(cmp(v[i],v[j])==1)
{aux=v[i];
v[i]=v[j];
v[j]=aux;
k++;
}
i+=i1[k%2];
j+=j1[k%2];
}
return i;
}
void sortare(int i,int j)
{if(i<j)
{int m=poz(i,j);
sortare(i,m-1);
sortare(m+1,j);
}
}
int nr()
{int i,j,max,maxim=0;
for(i=1;i<=n;i++) d[i]=0;
d[1]=1;
for(i=2;i<=n;i++)
{max=0;
for(j=i-1;j>=1;j--)
if(v[j].x<v[i].x && v[j].y<v[i].y && d[j]>max) max=d[j];
d[i]=max+1;
if(d[i]>maxim) maxim=d[i];
}
return maxim;
}
int main()
{fin>>n>>t;
int i,k;
for(k=1;k<=t;k++)
{for(i=1;i<=n;i++) fin>>v[i].x>>v[i].y>>v[i].z;
sortare(1,n);
fout<<nr()<<"\n";
}
fin.close();
fout.close();
return 0;
}