Pagini recente » Cod sursa (job #2180283) | Cod sursa (job #1575770) | Cod sursa (job #964247) | Cod sursa (job #1941102) | Cod sursa (job #543587)
Cod sursa(job #543587)
#include <iostream>
#include <cstdio>
#define NMAX 100005
using namespace std;
int s[NMAX], l[NMAX], ant[NMAX], sol[NMAX], N, maxx, poz;
void read(void)
{
FILE *f = fopen("scmax.in", "r");
fscanf(f, "%d", &N);
for(int i = 1; i <= N; ++i)
fscanf(f, "%d", &s[i]);
fclose(f);
}
void scm(void)
{
int i, j;
for(int i = 1; i <= N; ++i)
l[i] = 1, ant[i] = 1;
for(int i = 2; i <= N; ++i)
for(int j = 1; j < i; ++j)
if(s[i] > s[j] && l[i] < l[j] + 1)
{
l[i] = l[i] + 1;
ant[i] = j;
if(l[i] > maxx)
maxx = l[i], poz = i;
}
int cnt = maxx;
do
{
sol[cnt--] = s[poz];
poz = ant[poz];
}while(cnt);
}
void print(void)
{
FILE *g = fopen("scmax.out", "w");
fprintf(g, "%d\n", maxx);
for(int i = 1; i <= maxx; ++i)
fprintf(g, "%d ", sol[i]);
fclose(g);
}
int main(void)
{
read();
scm();
print();
return 0;
}