Cod sursa(job #794415)
Utilizator | Data | 6 octombrie 2012 12:04:49 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.26 kb |
#include<fstream>
using namespace std;
int n,b,a[100005],urm[100005],l[100005],i,j,p;
ifstream cin ("scmax.in");
ofstream cout("scmax.out");
int main()
{
cin>>n;p=n; urm[n]=-1;
l[n]=1;
for(i=1;i<=n;i++)
cin>>a[i]; int max=1;
for(i=n;i>=1;i--)
{ urm[i]=-1;
l[i]=1;
for(j=n;j>i;j--)
if(a[i]<a[j]&&l[i]<l[j]+1)
{
l[i]=l[j]+1;
urm[i]=j;
if(l[i]>max)
max=l[i], p=i;
} }
cout<<max<<endl;
i=p;
while(i!=-1)
{cout<<a[i]<<" ";i=urm[i];
}
return 0;
}