Cod sursa(job #2284613)

Utilizator Ioana_GaborGabor Ioana Ioana_Gabor Data 17 noiembrie 2018 11:57:22
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb

#include <iostream>
#include <fstream>
#define nmax 100005

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

int n,sir[nmax],dp[nmax],anterior[nmax],j_max,i_max,rez[nmax];

int main(){
    f>>n>>sir[1];
    dp[1]=1;
    i_max=1;
    for(int i=2;i<=n;i++){
        f>>sir[i];
        j_max=0;
        dp[i]=1;
        for(int j=1;j<i;j++){
            if(sir[j]<sir[i]&&dp[j]>dp[j_max]){
                j_max=j;
            }
        }
        dp[i]=dp[j_max]+1;
        anterior[i]=j_max;
        if(dp[i_max]<dp[i]){
            i_max=i;
        }
    }
    g<<dp[i_max]<<'\n';
    int j=i_max;
    for(int i=1;i<=dp[i_max];i++){
        rez[i]=sir[j];
        j=anterior[j];
    }
    for(int i=dp[i_max];i>=1;i--){
        g<<rez[i]<<' ';
    }
    f.close();
    g.close();
}