Cod sursa(job #2676833)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 25 noiembrie 2020 08:38:38
Problema Subsir 2 Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, v[5005], lung, p[5005];

int main(){
    fin >> n;
    for (int i = 1; i <= n; ++i){
        fin >> v[i];
        int st = 1, dr = lung, pos = -1;
        while (st <= dr){
            int mid = (st + dr) / 2;
            if (v[p[mid]] > v[i]){
                pos = mid;
                dr = mid - 1;
            }
            else{
                st = mid + 1;
            }
        }
        if (pos == -1){
            p[++lung] = i;
        }
        else{
            p[pos] = i;
        }
    }
    fout << lung << "\n";
    for (int i = 1; i <= lung; ++i){
        fout << p[i] << " ";
    }
    fin.close();
    fout.close();
    return 0;
}