Cod sursa(job #1343753)

Utilizator smaraldaSmaranda Dinu smaralda Data 15 februarie 2015 21:16:28
Problema Subsir crescator maximal Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;

const int NMAX = 1e5 + 5;

int a[NMAX];
vector <int> q;
vector <int>::iterator up, low;

int main() {
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);
    int n, i;

    scanf("%d", &n);
    for(i = 1; i <= n; ++ i)
        scanf("%d", &a[i]);

    for(i = 1; i <= n; ++ i) {
        up = upper_bound(q.begin(), q.end(), a[i]);
        low = lower_bound(q.begin(), q.end(), a[i]);

        if(low != q.end() && *low == a[i])
            continue;

        if(up == q.end()) {
            q.push_back(a[i]);
            continue;
        }

        *up = a[i];
    }

    printf("%d\n", q.size());
    return 0;
}