Cod sursa(job #2937946)

Utilizator Theodor17Pirnog Theodor Ioan Theodor17 Data 11 noiembrie 2022 14:26:43
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>

using namespace std;

ifstream cin("scmax.in");
ofstream cout("scmax.out");

const int NMAX = 1e5;

int v[NMAX + 1], ans[NMAX + 1], n;

int main(){

    cin >> n;
    for(int i = 1; i <= n; i++)
        cin >> v[i];

    int k = 0;
    for(int i = 1; i <= n; i++){

        if(ans[k] < v[i])
            ans[++k] = v[i];
        else{

            int st = 1, dr = k, mid = 0, poz = 0;

            while(st <= dr){

                mid = ((st + dr) >> 1);

                if(ans[mid] >= v[i]){

                    poz = mid;
                    dr = mid - 1;

                }else
                    st = mid + 1;

            }

            ans[poz] = v[i];
        }

    }

    cout << k << "\n";
    for(int i = 1; i <= k; i++)
        cout << ans[i] << " ";


    return 0;
}