Cod sursa(job #2206723)

Utilizator Iulia14iulia slanina Iulia14 Data 23 mai 2018 16:52:18
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<fstream>
using namespace std;
ifstream cin ("scmax.in");
ofstream cout ("scmax.out");
int poz[100005];
int v[100005];
int vf[100005];
int vv[100005];
int main()
{
    int n,nr,i,l=1,st,dr,m,x;
    cin>>n>>nr;
    vv[1]=nr;
    poz[1]=1;
    v[1]=nr;
    for (i=2;i<=n;i++)
    {
        cin>>nr;

        vv[i]=nr;
        st=1;
        dr=l;
        if(nr>v[l])
        {
            l++;
            v[l]=nr;
            poz[i]=l;
        }
        else
        {
            while (st<=dr)
            {
                m=(st+dr)/2;
                if (v[m]<nr)
                    st=m+1;
                else
                {
                    dr=m-1;
                    x=m;
                }
            }
            v[x]=nr;
            poz[i]=x;
        }

    }
    cout<<l<<endl;
    x=l;
    i=n;
    while (i>0)
    {
        if (poz[i]==x)
        {
            vf[x]=vv[i];
            x--;
        }
         i--;
    }
    for (i=1;i<=l;i++)
        cout<<vf[i]<<" ";
    return 0;
}