Cod sursa(job #2284574)

Utilizator Ioana_GaborGabor Ioana Ioana_Gabor Data 17 noiembrie 2018 11:40:09
Problema Subsir crescator maximal Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 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],i_max=0,dp_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];
        dp_max=0;
        dp[i]=1;
        for(int j=1;j<i;j++){
            if(sir[j]<sir[i]&&dp[j]>dp_max){
                dp[i]=dp[j]+1;
                anterior[i]=j;
            }
        }
        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();
}