Cod sursa(job #1717362)
| Utilizator | Data | 14 iunie 2016 19:05:40 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.66 kb |
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define nmax 100000
int n,x[nmax],p[nmax],l[nmax];
void afisare(int pc){
if(pc!=0)
{afisare(p[pc]);
fout<<x[pc]<<" ";}}
int main(){
fin>>n;
for(int i=1;i<=n;i++)
fin>>x[i];
for(int i=1;i<=n;i++)
{l[i]=1;
p[i]=0;
for(int j=1;j<i;j++)
if(l[i]<l[j]+1&&x[i]>x[j])
{l[i]=l[j]+1;
p[i]=j;}}
int pmax=1;
for(int i=1;i<=n;i++)
if(l[i]>l[pmax])
pmax=i;
fout<<l[pmax]<<"\n";
afisare(pmax);
return 0;}
