Pagini recente » Cod sursa (job #735894) | Cod sursa (job #2894629) | Cod sursa (job #1413535) | Cod sursa (job #2375514) | Cod sursa (job #731266)
Cod sursa(job #731266)
#include<fstream>
#include<algorithm>
#include<cstring>
#define maxn 3505
using namespace std;
ifstream in("cutii.in");
ofstream out("cutii.out");
struct cutie
{
int vec[4];
};
int dp[maxn],maxim,t,m;
cutie a[maxn];
bool cmp(cutie a,cutie b)
{
for(int i=1;i<=3;i++)
if(a.vec[i]<b.vec[i]) return 1;
else if(a.vec[i]>b.vec[i])return 0;
return 0;
}
bool check(int x,int y)
{
for(int i=1;i<=3;i++)
if(a[x].vec[i]>=a[y].vec[i]) return 0;
return 1;
}
void solve()
{
maxim=1;
for(int i=1;i<=m;i++)
sort(a[i].vec+1,a[i].vec+4);
sort(a+1,a+m+1,cmp);
for(int i=1;i<=m;i++)
dp[i]=1;
for(int i=m-1;i>=1;i--)
for(int j=i+1;j<=m;j++)
if(check(i,j))
{
if(dp[j]+1>dp[i])
dp[i]=dp[j]+1;
if(dp[i]>maxim) maxim=dp[i];
}
out<<maxim<<"\n";
}
void read()
{
in>>m>>t;
for(int i=1;i<=t;i++)
{
for(int i=1;i<=m;i++)
{
for(int j=1;j<=3;j++)
in>>a[i].vec[j];
}
solve();
}
}
int main()
{
read();
}