Cod sursa(job #1182355)

Utilizator petiVass Peter peti Data 6 mai 2014 10:14:48
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int main(){
    ifstream ifs("scmax.in");
    ofstream ofs("scmax.out");
    int N; ifs>>N;
    vector<int> a(N);

    for(int i=0;i<N;i++) ifs>>a[i];

    vector<int> best(N,0),pre(N);

    int max=0,imax;

    for(int i=0;i<N;i++){
        for(int j=0;j<i;j++)
            if((a[i]>a[j])&&(best[i]<=best[j])){
                best[i]=best[j]+1;
                pre[i]=j;
            }
        if(best[i]>max) {max=best[i]; imax=i;}
    }

    ofs<<max+1<<'\n';

    vector<int> ans(max+1,0);
    for(int i=max;i>=0;i--){
        ans[i]=a[imax];
        imax=pre[imax];
    }

    for(int i=0;i<max+1;i++)
        ofs<<ans[i]<<" ";

}