Cod sursa(job #2217641)

Utilizator vadim171098vadim pislari vadim171098 Data 1 iulie 2018 12:07:12
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#define MAX 100001
using namespace std;

int main()
{
  ifstream in;
  in.open("scmax.in");
  ofstream out;
  out.open("scmax.out");
  int nr,i,j, arr[MAX],best[MAX];
  in >> nr;
  for(i = 0 ; i != nr ; i++){
    in >> arr[i];
  }
  for(i = 0; i != nr ; i++){
    int temp = -1;
    for (j = 0 ; j < i; j++){
        if(temp == -1){
            if(arr[j]< arr[i]) temp =j;
        }
        else{
            if(best[j] > best[temp] && arr[j]< arr[i]) {
                    temp = j;
            }
        }
    }
    if( temp == -1)best[i] = 1;
    else best[i]=best[temp]+1;
  }
  int maxx = 0,k = 0;
  for(i = 0; i != nr; i++){
    if(best[i] > maxx){
        maxx = best[i];
        k = i;
    }
  }
  int ans[MAX],t=1;
  ans[0]=arr[k];
  for (i = k; i >= 0; i--){
    if(best[i]==best[k] - 1){
        k = i;
        ans[t] = arr[k];
        t++;
    }
  }
  out<<t<<endl;
  for(i = t - 1; i >= 0;i--){
    out << ans[i]<<" ";
  }
  return 0;
}