Pagini recente » Cod sursa (job #828123) | oni_2005_1_10 | Cod sursa (job #1923569) | Cod sursa (job #2788586) | Cod sursa (job #235588)
Cod sursa(job #235588)
#include<iostream>
#include<stdio.h>
FILE *f=fopen("cutii.in","r"),*g=fopen("cutii.out","w");
int a[3501][4],n,t;
int divide(int st,int dr)
{
int aux1=a[st][1],aux2=a[st][2],aux3=a[st][3];
while(st<dr)
{
while(st<dr&&a[dr][1]>aux1)
dr--;
a[st][1]=a[dr][1];a[st][2]=a[dr][2];a[st][3]=a[dr][3];
while(st<dr&&a[st]<aux1)
st--;
a[dr][1]=a[st][1];a[dr][2]=a[st][2];a[dr][3]=a[st][3];
}
a[st][1]=aux1;a[st][2]=aux2;a[st][3]=aux3;
return st;
}
void qsort(int st,int dr)
{
int m=divide(st,dr);
if(m-1>st) qsort(st,m-1);
if(m+1<dr) qsort(m+1,dr);
}
int scmax()
{
int l[3501],i,j,max;
l[n]=1;
for(int k=n-1;k>=1;k--)
{
max=0;
for(j=k+1;j<=n;j++)
{
if(a[j][2]>a[k][2]&&a[j][3]>a[k][3]&&l[j]>max)
max=l[j];
}
l[k]=max+1;
}
for(i=1;i<=n;i++)
if(l[i]>max)
max=l[i];
return max;
}
int main()
{
fscanf(f,"%d %d",&n,&t)
for(int i=1;i<=t;i++)
{
for(int i1=1;i1<=n;i1++)
fscanf(f,"%d %d %d",&a[i1][1],&a[i1][2],&a[i1][3]);
qsort(1,n);
fprintf(g,"%d\n",scmax());
}
return 0;
}