Cod sursa(job #3356073)

Utilizator andrei_sevescusevescu andrei andrei_sevescu Data 29 mai 2026 15:01:23
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
#define N 100001
using namespace std;
int par[N], lung[N], x[N], v[N], r[N];
FILE *in, *out;
int main()
{
    in = fopen("scmax.in", "r");
    out = fopen("scmax.out", "w");
    int n, i, maxim = 0, poz = 0, x = 0, j;
    fscanf(in, "%d",&n);
    for(i = 1;i <= n;i++){
        fscanf(in, "%d",&v[i]);
        for(j = 0;j <= i;j++){
            if(v[i] > v[j]){
                if(lung[j] + 1 > lung[i]){
                    par[i] = j;
                    lung[i] = 1 + lung[j];
                }
            }
        }
        if(lung[i] > maxim){
            poz = i;
            maxim = lung[i];
        }
    }
    fprintf(out, "%d\n",maxim);
    while(par[poz] != 0){
        cout << poz << " ";
        r[++x] = v[poz];
        poz = par[poz];
    }
    r[++x] = v[poz];
    for(i = x;i >= 1;i--){
        fprintf(out, "%d ",r[i]);
    }
    return 0;
}