Cod sursa(job #2981868)

Utilizator JungwonPreppy Girl Jungwon Data 18 februarie 2023 21:19:10
Problema Subsir crescator maximal Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,v[100001],a[100001],d[100001],k,p[100001];
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
    a[++k]=v[1];
    d[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(v[i]>a[k])
            a[++k]=v[i],d[i]=k;
        else
        {
            int st=1,dr=k,mj=0,poz=k+1;
            while(st<=dr)
            {
                mj=(st+dr)/2;
                if(a[mj]>v[i])
                    poz=mj,dr=mj-1;
                else
                    st=mj+1;
            }
            a[poz]=v[i];
            d[i]=poz;
        }
    }
    g<<k<<'\n';
    int j=n;
    for(int i=k;i>=1;i--)
    {
        while(d[j]!=i)
            j--;
        p[i]=j;
    }
    for(int i=1;i<=k;i++)
        g<<v[p[i]]<<" ";
    return 0;
}