Cod sursa(job #2982078)

Utilizator bitza1247Stanciu-Tivlea Valentin Gabriel bitza1247 Data 19 februarie 2023 15:13:45
Problema Subsir crescator maximal Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
///prima care nu e mai mica
///prima care e mai mare
#include <bits/stdc++.h>

using namespace std;

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

long long n,m,i,j,x,y[100002],k,st,dr,p,I[100002],v[100002],A[100002];

int main()
{
    f>>n;
    for(i=1; i<=n; i++)
    {
        f>>x;
        y[i]=x;
        if(x>v[k])
        {
            v[++k]=x;
            A[i]=k;
        }
        else
        {
            st=1;
            dr=k;
            p=k+1;
            while(st<=dr)
            {
                m=(st+dr)/2;
                if(v[m]>x)
                {
                    p=m;
                    dr=m-1;
                }
                else
                {
                    st=m+1;
                }
            }
            v[p]=x;
            A[i]=p;
        }
    }
    g<<k<<'\n';
    m=k;
    for(i=n; i>=1; i--)
    {
        while(A[i]!=m)
        {
            i--;
        }
        I[m]=i;
        m--;
    }
    for(i=1; i<=k; i++)
    {
        g<<y[I[i]]<<' ';
    }
    return 0;
}