Cod sursa(job #1968730)

Utilizator caprariuapCaprariu Alin-Paul caprariuap Data 17 aprilie 2017 20:22:00
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <stack>
#include <iomanip>
#include <queue>

using namespace std;

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

#define nmax 100010
int l[nmax],ind[nmax],p[nmax],a[nmax],i,n,ans;

void afisare(int x)
{
    if (x==0)
        return;
    afisare(p[x]);
    fout << a[x] << ' ';
}

int main()
{
    fin >> n;
    for (i=1; i<=n; i++)
    {
        fin >> a[i];
        int poz=lower_bound(l+1,l+ans+1,a[i])-l;
        l[poz]=a[i];
        ind[poz]=i;
        p[i]=ind[poz-1];
        if (poz>ans)
            ans=poz;
    }
    fout << ans << '\n';
    afisare(ind[ans]);
    fout << '\n';
}