Cod sursa(job #1975374)

Utilizator otnielMercea Otniel otniel Data 30 aprilie 2017 17:25:11
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<iostream>
#include<fstream>
#include<string.h>
#include<algorithm>
using namespace std;
long long a[100005];
long v[100005];
long res[100005];
long n;
bool comp(long x,long y)
{
    return a[x]<=a[y];
}
long lungime=0;

int main()
{

    ifstream f("scmax.in",fstream::in);
    ofstream g("scmax.out",fstream::out);
    f>>n;
    for(long i=0;i<n;i++)
    f>>a[i];
    for(long i=0;i<n;i++)
        res[i]=-1;
    v[0]=0;
    lungime=1;
    for(long i=1;i<n;i++)
        if(a[i]>a[v[lungime-1]]) {v[lungime++]=i;}
        else{

            long *r=upper_bound(v,v+lungime,i,comp);

            v[r-v]=i;
        }
    g<<lungime<<endl;
    for(long i=0;i<lungime;i++)
        g<<a[v[i]]<<" ";
}