Cod sursa(job #3340166)

Utilizator PopRadGabPopescu Radu Gabriel PopRadGab Data 12 februarie 2026 13:40:50
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;

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

int A[100001];
int D[100001]; // cate in urma lui formaza sir crescator
int T[100001]; // imi arata pozitia elem, folositor pentru reconstructia drumului
//(retine pozitia elementului anterior al sirului) !!!

void drum(int d_max){
    if(d_max){
        drum(T[u]);
        fout<<A[u]<<" ";
    }
}


int main(){
    ios::sync_with_stdio(false);
    fin.tie(nullptr);

    int n;
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>A[i];

    int sol=0,d_max=0;
    D[1]=1;
    for(int i=2;i<=n;i++){
        int maxim=0,p=0;

        for(int j=1;j<i;j++){
            if(v[j]<v[i] && D[j]>maxim){
                maxim=D[j];
                p=j;
            }
        }
        D[j]=maxim+1; // subsir maxim 1 ... j ... i + 1(elm. curent nou)
        if(D[i]!=1)
            T[i]=p;
        else
            T[i]=0;
        if(D[i]>sol){
            sol=D[i];
            d_max=i;
        }
    }

    fout<<sol<<'\n';
    drum(d_max);
    return 0;
}