Cod sursa(job #2205715)

Utilizator Iulia14iulia slanina Iulia14 Data 19 mai 2018 23:15:57
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;
ifstream cin ("scmax.in");
ofstream cout ("scmax.out");
int poz[100005];
int v[100005];
int vf[100005];
int main()
{
    int n,nr,i,l=1,st,dr,m,x;
    cin>>n>>nr;
    poz[1]=1;
    v[1]=nr;
    for (i=2;i<=n;i++)
    {
        cin>>nr;
        st=1;
        dr=l;
        x=0;
        while (st<=dr)
        {
            m=(st+dr)/2;
            if (v[m]>=nr)
                dr=m-1;
            else
            {
                st=m+1;
                x=m;
            }
        }
        x++;
        if (x==l+1)
            l=l+1;
        v[x]=nr;
        poz[i]=x;
    }
    cout<<l<<endl;
    x=l;
    i=n;
    while (i>0)
    {
        if (poz[i]==x)
        {
            vf[x]=v[i];
            x--;
        }
         i--;
    }
    for (i=1;i<=l;i++)
        cout<<v[i]<<" ";
    return 0;
}