Cod sursa(job #1044631)
| Utilizator | Data | 30 noiembrie 2013 10:03:22 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.71 kb |
#include <iostream>
#include <fstream>
using namespace std;
const int LUNG=10000;
int a[LUNG],b[LUNG],p[LUNG],c[LUNG];
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int main()
{
int n,i,j,lmax=0,p1=0,poz;
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
for(i=1;i<=n;i++)b[i]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<i;j++)
if(a[j]<a[i] && b[i]<b[j]+1)
{
b[i]=b[j]+1;
if(b[i]>lmax)lmax=b[i];
p[i]=j;
poz=i;
}
}
while(poz>0)
{
c[++p1]=a[poz];
poz=p[poz];
}
fout<<lmax<<'\n';
for(i=p1;i>=1;i--)fout<<c[i]<<' ';
}
