Cod sursa(job #2232302)

Utilizator MaaaaaCristina Ma Maaaaa Data 18 august 2018 15:41:10
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
#define nmax 100005
using namespace std;
fstream f1("scmax.in", ios::in);
fstream f2("scmax.out", ios::out);
int n, a[nmax], s[nmax], l=0, lung[nmax], nrsol, sol[nmax];
int cauta(int st, int dr, int val)
{
    if(st<=dr)
    {
        int mijl=(st+dr)/2;
        if(s[mijl]< val) return cauta( mijl+1, dr, val);
        else return cauta(st, mijl-1, val);
    }
    else return st;
}
int main()
{
    int i, poz;
    f1>>n;
    for(i=1; i<=n; i++)
    {
        f1>>a[i];
        poz=cauta(1, l, a[i]);
        s[poz]=a[i];
        lung[i]=poz;
        if(poz>l) l=poz;
    }
    f2<<l<<"\n";
    for(i=n; (i>=1)&&(l>0); i--)
        if(lung[i]==l)
        {
            nrsol++; sol[nrsol]=a[i];l--;
        }
    for(i=nrsol; i>=1; i--)
        f2<<sol[i]<<' ';
    return 0;
}