Cod sursa(job #2458320)

Utilizator minecraft3Vintila Valentin Ioan minecraft3 Data 20 septembrie 2019 10:59:33
Problema Subsir 2 Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

int main() {
    ifstream fin("subsir2.in");
    ofstream fout("subsir2.out");

    int n, v[5005], b[5005], l[5005], p[5005], i, bn, j, k, aux;
    fin >> n;

    v[0] = b[0] = l[0] = p[0] = bn = 0;
    for(i = 1; i <= n; ++i) {
        fin >> v[i];
        j = 1; k = bn;
        while(j <= k) {
            aux = (j + k) / 2;
            if(v[i] < v[b[aux]]) k = aux - 1;
            else j = aux + 1;
        }
        p[i] = b[j-1];
        b[j] = i;
        l[i] = j;
        bn = max(bn, j);
    }

    (fout << bn).put('\n');
    for(i = n; i >= 1; --i)
        if(l[i] == bn)
            break;
    k = 0;
    while(i) {
        b[k++] = i;
        i = p[i];
    }

    for(i = k - 1; i >= 0; --i)
        (fout << b[i]).put(' ');

    return 0;
}