Cod sursa(job #1199615)

Utilizator azkabancont-vechi azkaban Data 19 iunie 2014 22:08:04
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 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,sol,Lbest,pivot,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];
    long sol=coef;
    Ssol[coef]=A[pivot];
    while (--coef) 
       for (i=pivot-1;i>=1;--i) {
                                 if (D[i]==coef && A[i]<A[pivot]){
                                                                  Ssol[coef]=A[i];
                                                                  pivot=i;
                                                                  break;
                                                                 }
                                }
    for (i=1;i<=sol;++i) cout<<Ssol[i]<<" ";
    
return 0;
}