Pagini recente » Cod sursa (job #552723) | Cod sursa (job #1704017) | Cod sursa (job #3284758) | Cod sursa (job #2722722) | Cod sursa (job #430287)
Cod sursa(job #430287)
#include<fstream>
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int vx[3501],vy[3501],vz[3501],v[3501],n,t;
void aranjeaza (int i)
{
int aux=0;
for(int j=1;j<=n&&aux==0;++j)
if(v[i]==vx[j]*vy[j]*vz[j]){
aux=vx[i];
vx[i]=vx[j];
vx[j]=aux;
aux=vy[i];
vy[i]=vy[j];
vy[j]=aux;
aux=vz[i];
vz[i]=vz[j];
vz[j]=aux;
}
}
int cauta(int i)
{
int c=1,x=vx[i],y=vy[i],z=vz[i],aux=v[i];
for(int j=i-1;j>=1;--j)
if(aux>v[j])
if(vx[j]<x&&vy[j]<y&&vz[j]<z){
++c;
aux=v[j];
x=vx[j];
y=vy[j];
z=vz[j];
}
return c;
}
int verificare (int i)
{
if(v[n]>v[i])
if(vx[n]>vx[i]&&vy[n]>vy[i]&&vz[n]>vz[i])
return 1;
return 0;
}
int main ()
{
ifstream fin ("cutii.in");
freopen("cutii.out","w",stdout);
fin>>n>>t;
for(int k=1;k<=t;++k){
for(int i=1;i<=n;++i){
fin>>vx[i]>>vy[i]>>vz[i];
v[i]=vx[i]*vy[i]*vz[i];}
sort(v+1,v+n+1);
for(int i=1;i<=n;++i)
aranjeaza(i);
int max=1;
for(int i=n;i>1;--i){
int c=cauta(i);
c+=verificare(i);
if(c>max)
max=c;
}
printf("%d\n",max);
}
fin.close();
return 0;}