Cod sursa(job #920117)
| Utilizator | Data | 20 martie 2013 04:25:13 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
#include <stdio.h>
#define NMAX 100000
using namespace std;
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
int i,N,a[NMAX],l[NMAX];
int main()
{
fscanf(f,"%d",&N);
for(i=1;i<=N;i++)
fscanf(f,"%d",&a[i]);
l[N]=1; int m,Lmax(1);
for(i=N-1;i>=1;i--)
{
m=0;
for(int j=i+1;j<=N;j++)
if(a[i]<a[j]&&l[j]>m)
m=l[j];
l[i]=m+1;
if(l[i]>Lmax) Lmax=l[i];
}
fprintf(g,"%d\n",Lmax);
i=1;
while(Lmax)
{
while(l[i]!=Lmax)
i++;
fprintf(g,"%d ",a[i]);
Lmax--;
}
return 0;
}
