Pagini recente » Borderou de evaluare (job #123813) | Cod sursa (job #235851)
Cod sursa(job #235851)
#include<iostream>
#include<stdio.h>
FILE *f=fopen("cutii.in","r"),*g=fopen("cutii.out","w");
int a[3501][4],n,t;
void qsort(int st,int dr)
{
int i=st,j=dr,aux;
int x=a[(st+dr)/2][1];
do
{
while(a[i][1]<x) i++;
while(a[j][1]>x) j--;
if(i<=j)
{
aux=a[i][1];a[i][1]=a[j][1];a[j][1]=aux;
aux=a[i][2];a[i][2]=a[j][2];a[j][2]=aux;
aux=a[i][3];a[i][3]=a[j][3];a[j][3]=aux;
i++;j--;
}
}
while(i<=j);
if(st<j) qsort(st,j);
if(dr>i) qsort(i,dr);
}
int scmax()
{
int l[3501],j,max,k;
l[n]=1;
for(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;
}
max=l[n];
for(k=1;k<=n;k++)
if(l[k]>max)
max=l[k];
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());
}
fclose(f);fclose(g);
return 0;
}