Pagini recente » Cod sursa (job #1039308) | Rating Andrei Maurescu (throwaway1123) | Cod sursa (job #2139611) | Cod sursa (job #22962) | Cod sursa (job #808945)
Cod sursa(job #808945)
#include <cstdio>
const int MAX_SIZE(3501);
int n;
int boxes [MAX_SIZE] [3];
int sorted [MAX_SIZE];
int max_length [MAX_SIZE];
inline void read (void)
{
for (int i(1) ; i <= n ; ++i)
{
std::scanf("%d%d%d",&boxes[i][0],&boxes[i][1],&boxes[i][2]);
sorted[*boxes[i]] = i;
}
}
inline bool fit (int a, int b)
{
a = sorted[a];
b = sorted[b];
return boxes[a][1] < boxes[b][1] && boxes[a][2] < boxes[b][2];
}
inline int maximum_increasing_substring (void)
{
max_length[1] = 1;
int i, j, length, max(-1);
for (i = 2 ; i <= n ; ++i)
{
length = 1;
for (j = i - 1 ; j ; --j)
{
if (fit(j,i))
if (max_length[j] + 1 > length)
length = max_length[j] + 1;
}
max_length[i] = length;
if (length > max)
max = length;
}
return max;
}
int main (void)
{
std::freopen("cutii.in","r",stdin);
std::freopen("cutii.out","w",stdout);
int t;
std::scanf("%d%d",&n,&t);
do
{
read();
std::printf("%d\n",maximum_increasing_substring());
--t;
}
while (t);
std::fclose(stdin);
std::fclose(stdout);
return 0;
}