Cod sursa(job #1306153)

Utilizator refugiatBoni Daniel Stefan refugiat Data 30 decembrie 2014 16:55:42
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
#define nmax 100002
int s[nmax],p[nmax],sol[nmax];
int main()
{
    ifstream si;
    si.open("scmax.in");
    ofstream so;
    so.open("scmax.out");
    int n;
    si>>n;
    int v[n];
    int i;
    for(i=0;i<n;++i)
        si>>v[i];
    int l=0;
    for(i=0;i<n;++i)
    {
        int x=lower_bound(s,s+l,v[i])-s;

        p[i]=x;
        s[x]=v[i];
        if(x+1>l)
        {
            l=x+1;
        }
    }
    so<<l<<'\n';
    int x=l;
    for(i=n-1;x;--i)
    {
        if(p[i]==x-1)
        {
            --x;
            sol[x]=v[i];
        }
    }
    for(i=0;i<l;++i)
        so<<sol[i]<<' ';
    so<<'\n';
}