Cod sursa(job #1362817)

Utilizator traian.vidrascutraian vidrascu traian.vidrascu Data 26 februarie 2015 15:47:25
Problema Subsir crescator maximal Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

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

int n,v[100005],q[100005],p[100005],nr,aux,m;
int main()
{
    int i;
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    q[1]=v[1];
    p[1]=1;
    nr=1;

    for(i=2;i<=n;i++)
    {
        aux = lower_bound(q+1,q+1+nr,v[i])-q;
        if(aux>nr)
            {
               nr++;
               q[nr]=v[i];
               p[i]=nr;
            }
        else
        {
            q[aux]=v[i];
            p[i]=aux;
        }


    }
    g<<nr<<"\n";
    m=nr;
    for(i=n;i>0;i--)
        {
            if(p[i]==m)
            {
                g<<v[i]<<" ";
                m--;
            }
            if(m==0)
            break;
        }
    return 0;
}