Pagini recente » Cod sursa (job #633317) | Cod sursa (job #2521726) | Cod sursa (job #556224) | Cod sursa (job #2609995) | Cod sursa (job #3356073)
#include <bits/stdc++.h>
#define N 100001
using namespace std;
int par[N], lung[N], x[N], v[N], r[N];
FILE *in, *out;
int main()
{
in = fopen("scmax.in", "r");
out = fopen("scmax.out", "w");
int n, i, maxim = 0, poz = 0, x = 0, j;
fscanf(in, "%d",&n);
for(i = 1;i <= n;i++){
fscanf(in, "%d",&v[i]);
for(j = 0;j <= i;j++){
if(v[i] > v[j]){
if(lung[j] + 1 > lung[i]){
par[i] = j;
lung[i] = 1 + lung[j];
}
}
}
if(lung[i] > maxim){
poz = i;
maxim = lung[i];
}
}
fprintf(out, "%d\n",maxim);
while(par[poz] != 0){
cout << poz << " ";
r[++x] = v[poz];
poz = par[poz];
}
r[++x] = v[poz];
for(i = x;i >= 1;i--){
fprintf(out, "%d ",r[i]);
}
return 0;
}