Mai intai trebuie sa te autentifici.
Cod sursa(job #1403861)
| Utilizator | Data | 27 martie 2015 17:04:42 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.01 kb |
#include <iostream>
#include <fstream>
#define NMAX 100004
using namespace std;
int A[NMAX],Lmax[NMAX];
int s[NMAX],urm[NMAX];
int l,maxx,n,i,j,maxpoz,maxt=0;
/*int cautarebinara()
{
int k,step=1;
for(;step<i;step<<=1);
for(k=1;step;step>>=1)
if(k+step<=i && A[k+step]<A[i])
k+=step;
if(k==1 && A[k]>=A[i]) return 0;
return k;
}*/
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(i=1;i<=n;i++)
urm[i]=-1;
for(i=1;i<=n;i++)
{
f>>A[i];
l=1;maxx=1;
for(j=1;j<i;j++)
if(A[j]<A[i] && Lmax[j]+1>maxx)
{
maxx=Lmax[j]+1;
l=Lmax[j]+1;
urm[i]=j;
}
Lmax[i]=l;
if(Lmax[i]>maxt)
{
maxt=Lmax[i];
maxpoz=i;
}
}
g<<maxt<<"\n";
int val=0;
for(i=maxpoz;i!=-1;i=urm[i]) s[val++]=A[i];
for(i=val-1;i>=0;i--)
g<<s[i]<<" ";
}
