Cod sursa(job #2514592)

Utilizator mirceatlxhaha haha mirceatlx Data 26 decembrie 2019 14:51:38
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int a[100002],b[100002],c[100002];
int main()
{
    int n,i,r,pas,m=0;
    in>>n;
    for(i=0;i<n;i++)
    {
        in>>a[i];
        r=0;pas=1<<30;
        while(pas)
        {
            if(r+pas<=m&&a[i]>a[b[r+pas]])
                r+=pas;
            pas>>=1;
        }
        b[++r]=i;
        if(r!=1)
            c[i]=b[r-1];
        else
            c[i]=-1;
        m=max(m,r);
    }
    for(r=b[m],i=0;c[r]!=-1;r=c[r],i++)
        b[i]=a[r];
    b[i]=a[r];
    out<<m<<"\n";
    for(i=m-1;i>=0;i--)
        out<<b[i]<<" ";
}