Cod sursa(job #2175437)
| Utilizator | Data | 16 martie 2018 17:11:18 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.65 kb |
#include <cstdio>
#include <fstream>
using namespace std;
int n, a[100000],l[100000],next[100000];
int main()
{
int m=0;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
fin>>n;
for(int i=0;i<n;++i)
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=1+i;j<n;++j){
if(l[j]+1>l[i]&&a[j]>a[i]){
l[i]=l[j]+1;
next[i]=j;
}
}
if(l[i]>l[m])
m=i;
}
fout<<l[m]<<'\n';
for(int i=m;i!=-1;i=next[i])
fout<<a[i]<< ' ';
return 0;
}
