Pagini recente » Cod sursa (job #3252615) | Cod sursa (job #2261577) | Cod sursa (job #2886613) | Cod sursa (job #2633126) | Cod sursa (job #50181)
Cod sursa(job #50181)
#include <stdio.h>
#include <string.h>
struct par { int a,b,c; };
par a[3500],b[3500];
int s[3500],n,t,i,j,k,max,c[3500];
void sort()
{
memset(c,0,sizeof(c));
for (i=0;i<n;i++)
c[b[i].a]++;
for (i=1;i<3500&&c[i-1]<n;i++)
c[i]+=c[i-1];
for (i=n-1;i>=0;i--)
a[--c[b[i].a]]=b[i];
}
int main()
{
FILE *fin,*fout;
fin=fopen("cutii.in","rt");
fout=fopen("cutii.out","wt");
fscanf(fin,"%d %d",&n,&t);
for (k=1;k<=t;k++)
{ for (i=0;i<n;i++)
fscanf(fin,"%d %d %d",&b[i].a,&b[i].b,&b[i].c);
sort();
for (i=n-1;i>=0;i--)
{ s[i]=0;
max=i;
for (j=i+1;j<n;j++)
if (a[i].a<a[j].a&&a[i].b<a[j].b&&a[i].c<a[j].c&&s[j]>s[max])
max=j;
s[i]=s[max]+1;
}
max=0;
for (i=0;i<n;i++)
if (s[i]>max)
max=s[i];
fprintf (fout,"%d\n",max);
}
return 0;
}