Cod sursa(job #1504044)

Utilizator MCDanutMiron Claudiu Danut MCDanut Data 17 octombrie 2015 11:36:38
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <iostream>

using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
/*
Programare dinamica
1)Subsir crescator maximal (scmax)

*/
int n, dp[1000005]; ///dp[i] =subsirul cres max care se termina cu v[i]
    int t[1000005];///t[i]=elementul anterior din subsir
    int v[1000005],i,j;//sir
void afis(int p){
    if(t[p]!=-1)
        afis(t[p]);
    fout<<v[p]<<" ";

}

int main()
{

    fin>>n;
    for(i=1;i<=n;i++){
        fin>>v[i];
        dp[i]=1;
        t[i]=-1;
    }
    for(i=1;i<=n;i++){
        for(j=1;j<i;j++){
            if(v[j]<v[i]&&dp[i]<dp[j]+1){
                dp[i]=dp[j]+1;
                t[i]= j;


            }


        }

    }
    int sol=1,poz=1;
    for(i=1;i<=n;i++){
        if(dp[i]>sol)
            sol=dp[i],poz=i;
    }
    fout<<sol<<endl;
    afis(poz);








    return 0;
}