Pagini recente » Cod sursa (job #552802) | Cod sursa (job #1889889) | Cod sursa (job #2794245) | Cod sursa (job #2477455) | Cod sursa (job #514873)
Cod sursa(job #514873)
#include <fstream>
#include <algorithm>
using namespace std;
#define dim 3510
int best[dim],ciur[dim], n;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
struct lista
{
int x, y, z;
}v[dim];
int cmp(lista a,lista b)
{
return a.x<b.x || (a.x==b.x && a.y<b.y) || (a.x==b.x && a.y==b.y && a.z<b.z);
};
int max(int a, int b)
{
if(a<b)
return 1;
return 0;
}
int compare(int a,int b)
{
if(a>b)
return a;
return b;
}
int solve()
{
ciur[1]=best[1]=1;
int maxim, high=0;
int i, j;
for(i=2;i<=n;++i)
{
maxim=0;
for(j=i-1;j>=1;--j)
{
if(max(v[j].x,v[i].x)==1)
if(max(v[j].y,v[i].y)==1)
if(max(v[j].z,v[i].z)==1)
maxim=compare(maxim, ciur[j]);
if (best[j]<=maxim)
break;
}
high=compare (high,best[i]=compare (best[i-1],ciur[i]=maxim+1));
}
fout<<high <<'\n';
}
int main()
{
int t;
fin>>n;
fin>>t;
for( ; t ;--t)
{
for(int i=1;i<=n;++i)
fin>> v[i].x >>v[i].y >>v[i].z;
sort(v+1,v+n+1,cmp);
solve();
}
return 0;
}