Cod sursa(job #1941592)

Utilizator AkrielAkriel Akriel Data 27 martie 2017 14:38:03
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

const int N = 100005;
const int oo=numeric_limits<int>::max();
const pair <int, int> INF = make_pair(oo,oo);

int n, v[N], B[N], L;
vector <pair <int, int> > C( N, INF);
void printSolution(int D){
    if (D == 0)
        return;
    printSolution(B[D]);
    g << v[D] << " ";
}

int main()
{
    f >> n;
    for ( int i = 1; i <= n; i++ )
        f >> v[i];

    vector <pair< int, int> > :: iterator it;
    C[0]=make_pair(0,0);
    for ( int i = 1; i <= n; i++ ){
        it = lower_bound(C.begin(), C.end(), make_pair(v[i],0));
        if(it->first==oo)
            L++;
        *it=make_pair(v[i],i);
        it--;
        B[i]=it->second;
    }
    g << L << "\n";
    printSolution(C[L].second);
}