Pagini recente » Cod sursa (job #1469134) | Cod sursa (job #2165863) | Cod sursa (job #1599062) | Cod sursa (job #2758616) | Cod sursa (job #1090342)
//Include
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *in, *out;
//Constante
const int sz = (int)1e5+1;
//Variabile
int maxim, position, num;
int previous[sz], values[sz], best[sz];
//Functii
void construct(int pos)
{
if(previous[pos])
construct(previous[pos]);
fprintf(out,"%d ", values[pos]);
}
//Main
int main()
{
in = fopen("scmax.in", "rt");
out = fopen("scmax.out", "wt");
fscanf(in,"%d", &num);
for(int i=1; i<=num; ++i)
fscanf(in,"%d", &values[i]);
for(int i=1; i<=num; ++i)
{
best[i] = 1;
for(int j=1; j<i; ++j)
{
if(values[j] < values[i] && best[i] < best[j]+1)
{
best[i] = best[j]+1;
previous[i] = j;
}
}
}
int position = max_element(best+1, best+num+1) - best;
fprintf(out,"%d\n", best[position]);
construct(position);
fclose(in);
fclose(out);
return 0;
}