Cod sursa(job #1969886)

Utilizator raduzxstefanescu radu raduzx Data 18 aprilie 2017 18:25:19
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
#define nmax 100010
#define maxim 2000000010
int v[nmax],a[nmax],poz[nmax],t[nmax];
void afisare(int k)
{
    if(k!=0)
    {
        afisare(t[k]);
        g<<v[k]<<" ";
    }
}
int main()
{
    int n,i,qw,lmax,k;
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    lmax=0;
    for(i=1;i<=n;i++)
    {
        if(v[i]>a[lmax])
        {
            lmax+=1;
            a[lmax]=v[i];
            poz[lmax]=i;
            t[i]=poz[lmax-1];
            a[lmax+1]=maxim;
        }
        else
        {
            qw=upper_bound(a+1,a+lmax,v[i]-1)-a;
            a[qw]=v[i];
            poz[qw]=i;
            t[i]=poz[qw-1];
        }
    }
    g<<lmax<<'\n';
    k=poz[lmax];
    afisare(k);
    return 0;
}