Cod sursa(job #3353969)

Utilizator radu._.21Radu Pelea radu._.21 Data 12 mai 2026 23:38:15
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>


using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

set<pair<int,int>>s;
int v[100005],d[100005],tata[100005];
void afisare(int poz){
    if(tata[poz])
        afisare(tata[poz]);
    fout<<v[poz]<<" ";
}
int main() {
    int n;
    fin>>n;
    for(int i = 1; i <= n; i++) {
        fin>>v[i];
        d[i] = 1;
    }
    s.insert(make_pair(v[1],1));
    for(int i = 2; i <= n ; i++){
        for(auto it = s.begin(); it!=s.end(); it++){
            if(it->first >= v[i])
                break;
            if(d[it->second] + 1 > d[i])
                d[i] = d[it->second] + 1, tata[i] = it->second;

        }
        s.insert(make_pair(v[i],i));
    }
    int max0 = 0, poz;
    for(int i = 1; i <=n ;i++)
        if(d[i] > max0)
            max0 = d[i],poz = i;
    fout<<max0<<'\n';
    afisare(poz);
    return 0;
}