Cod sursa(job #1614835)

Utilizator razvandRazvan Dumitru razvand Data 26 februarie 2016 10:34:14
Problema Subsir 2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stack>

using namespace std;

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

int v[100003];
int s[100003];
int o[100003];
int k;

int main() {

    int n;
    in >> n;

    for(int i = 0; i < n; i++) {
        in >> v[i];
        s[i] = 1000003;
        o[i] = 5001;
    }

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

        int poz = lower_bound(s, s+n, v[i])-s;

        //cout << "Low " << v[i] << " " << poz << endl;

        s[poz] = v[i];
        o[poz] = i;
        k = poz;

        while(poz < n && s[poz+1] != 1000003) {
            s[++poz] = 1000003;
            o[poz] = 5001;
        }

        /*for(int i = 0; i < n; i++)
            cout << s[i] << " ";
        cout << endl;*/

    }

    out << k+1 << '\n';

    for(int i = 0; i < n && o[i] != 5001; i++)
        out << o[i]+1 << " ";

    int poz = 0;

    return 0;
}