Cod sursa(job #1687396)
| Utilizator | Data | 12 aprilie 2016 20:36:04 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define nmax 100001
int a[nmax],l[nmax],poz[nmax];
int n,m,primul;
void subsir()
{ for(int i=n;i>=1;i--)
{l[i]=1;
poz[i]=0;
for(int j=i+1;j<=n;j++)
if(a[i]<a[j]&&l[i]<1+l[j])
{l[i]=l[j]+1;
poz[i]=j;}
if(m<l[i])
{m=l[i];
primul=i;}}}
int main(){
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
subsir();
fout<<m<<"\n";
for(int i=primul;i>0;i=poz[i])
fout<<a[i]<<" ";
return 0;
}
