Cod sursa(job #3202047)

Utilizator vvvvvvvvvvvvvVusc David vvvvvvvvvvvvv Data 10 februarie 2024 14:34:53
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int NMAX = 1e6 + 1;
int n, v[NMAX], best[NMAX], last[NMAX], maxL, maxI, k;
vector<int> sol;

int main(){
    fin >> n;
    for(int i = 1; i <= n; i++) fin >> v[i], best[i] = 1, last[i] = i;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= i; j++)
            if(v[j] < v[i] && best[j] + 1 > best[i]) {
                best[i] = best[j] + 1, last[i] = j;
                if(best[i] > maxL){
                    maxL = best[i];
                    maxI = i;
                }    
            }
    fout << maxL << '\n';
    for(k = maxI; k != last[k]; k = last[k]) sol.push_back(v[k]);
    sol.push_back(v[k]);
    for(int i = sol.size() - 1; i >= 0; i--) fout << sol[i] << ' ';
    return 0;
}