Cod sursa(job #1254330)

Utilizator codi22FMI Condrea Florin codi22 Data 2 noiembrie 2014 15:49:59
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <cstdio>
using namespace std;
int s,d,mij,a,V[100000],P[100000],n,lungime,m;
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%ld",&n);
    for (int i=1;i<=n;i++)
    {
        scanf("%d",&a);
        if (V[lungime]<a)
        {
            lungime++;
            V[lungime]=a;
            P[i]=lungime;
        }
        else
        {
            s=1;
            d=lungime;
            m=(s+d)/2;
            while (s<=d)
            {
                if (V[s-1]<a&&V[s]>=a) {V[m]=a;P[a]=i;break;}
                else if (V[m]<a) {s=m+1;m=(s+d)/2;}
                else {d=m-1;m=(s+d)/2;}
            }
        }
    }
    printf("%d\n",lungime);
  for (int i=1;i<=lungime;i++)
    printf("%d ",V[i]);
}