Cod sursa(job #1033161)

Utilizator Viva12Ferentz Sergiu Viva12 Data 16 noiembrie 2013 15:35:24
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <cstdio>

using namespace std;

int a [1000000];

int n;
void scan(){

    cin >> n;
    for(int i =0 ; i < n; i++)
      cin >> a[i];
}

int sol [1000000];
void debug(){

  for(int i = 0; i < n ; i++)
  cout << sol[i] << " ";

  cout << endl;
}
int maxV = -1;
int pre[1000000];
int bestP;
int bestV;
void dp(){

   for(int i = 0 ; i < n ; i++){

    sol[i] = 1;
    pre[i] = -1;
    for(int j = 0; j < i; j++){
      if(a[i] > a[j]){
        {sol[i] = max(sol[i],sol[j]+1);
        pre[i] = j;
        if(bestV < sol[i])
        {bestV = sol[i];
        bestP = i;
        }
        }

	}

      }
   }
cout << bestV << endl;
}

void print(int val){


    if(pre[val] == -1){
        cout << a[val] << " ";
        return;
    }

    print(pre[val]);
    cout << a[val] << " ";
}

int main(){

  freopen("LCS.in","r",stdin);
  freopen("LCS.out","w",stdout);
  scan();
  dp();
  print(bestP);
}