Pagini recente » Cod sursa (job #1640690) | Cod sursa (job #1194530) | Cod sursa (job #585098) | Cod sursa (job #1640740) | Cod sursa (job #2112728)
// Link: http://www.infoarena.ro/problema/cutii
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
int n, t, maxim, v[3500]; // n= nr cutii, t=nr intrari, maxim=nr maxim de cutii cuibarite, v=vector caracteristic pt cutiile examinate
struct cutie
{
int x;
int y;
int z;
}cutii[3500];
bool test(int a, int b)
{
if(cutii[a].x>cutii[b].x && cutii[a].y>cutii[b].y && cutii[a].z>cutii[b].z)
return true;
return false;
}
int rec(int a, int nr, int b, int memo)
{
for(int i=b ; i<n ; i++)
{
e:
if(i!=a)
if(test(a,i))
if(v[i]!=0)
rec(i,nr+1,i+1,memo);
else
{
nr=nr+v[i];
i++;
goto e;
}
}
v[memo]=nr;
if(nr>maxim)
maxim=nr;
}
int main()
{
f>>n>>t;
int x=0;
while(x<t)
{
for(int i=0; i<n ; i++)
f>>cutii[i].x>>cutii[i].y>>cutii[i].z;
maxim=0;
for(int j=0; j<n ; j++)
rec(j,1,0,j);
g<<maxim<<endl;
x++;
}
}