Pagini recente » Cod sursa (job #398139) | Cod sursa (job #2698262) | Cod sursa (job #2776475) | Cod sursa (job #1727483) | Cod sursa (job #2497245)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cassert>
using namespace std;
#define NN 100005
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, a[NN], L[NN], next[NN];
int main(){
assert(fin >> n );
for(int i=1 ; i<=n ; ++i)
assert(fin >> a[i]);
L[n] = 1;
next[n] = -1;
for(int i=n-1 ; i>0 ; i--)
{
L[i] = 1, next[i] = -1;
for(int j=i+1 ; j<=n; ++j)
if(a[i]<=a[j] && L[i]<L[j]+1)
L[i] = L[j] + 1, next[i] = j;
}
int pmax = 1;
for(int i=1 ; i<=n ; ++i)
if(L[pmax] < L[i])
pmax = i;
fout << L[pmax] << endl;
for(int i=pmax ; i!=-1 ; i = next[i])
fout << i << " ";
return 0;
}