Pagini recente » Cod sursa (job #1487186) | Cod sursa (job #2796924) | Cod sursa (job #1335420) | Cod sursa (job #3147220) | Cod sursa (job #731241)
Cod sursa(job #731241)
#include<fstream>
#include<algorithm>
#define maxn 100
using namespace std;
ifstream in("cutii.in");
ofstream out("cutii.out");
typedef struct cutie
{
int nr;
long long vec[maxn];
};
int dp[maxn],maxim,p,t;
cutie a[maxn];
int sol[maxn];
int m,n;
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=0;
for(int i=1;i<=m;i++)
sort(a[i].vec+1,a[i].vec+n+1);
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],p=i;
}
if(maxim==0) out<<"1\n1";
out<<maxim<<"\n";
}
void read()
{
in>>m>>t;
for(int i=1;i<=t;i++)
{
for(int i=1;i<=m;i++)
{
a[i].nr=i;
for(int j=1;j<=3;j++)
in>>a[i].vec[j];
}
solve();
}
}
int main()
{
read();
}