Cod sursa(job #1199607)

Utilizator azkabancont-vechi azkaban Data 19 iunie 2014 21:35:43
Problema Subsir crescator maximal Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
#include <algorithm> 
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");

long n,i,j,A[100013],D[100013],coef,Lbest,pivot,sol(0),Ssol[100013];
int main()
{
    cin>>n;
    for (i=1;i<=n;++i) cin>>A[i];
    D[1]=1;
    for (i=2;i<=n;++i){
                       Lbest=0;
                       for (j=i-1; j>0;--j) 
                                  if (A[j]<A[i]) Lbest=max(Lbest,D[j]);               
                       D[i]=1+Lbest;           
                      }
    for (i=1;i<=n;++i) 
        if (D[i]>Lbest) { 
                         pivot=i;
                         Lbest=D[i];
                         }
    cout<<D[pivot]<<"\n";
    coef=D[pivot]-1;
    Ssol[++sol]=A[pivot];
 while (--coef) 
       for (i=pivot-1;i>=1;--i) {
                                 if (D[i]==coef){
                                                 Ssol[++sol]=A[i];
                                                 break;
                                                 }
                     
                             
                              }
    for (i=sol;i>=1;--i) cout<<Ssol[i]<<" ";
    
   
    
return 0;
}