Cod sursa(job #1106298)

Utilizator a96tudorAvram Tudor a96tudor Data 12 februarie 2014 18:23:56
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<cstdio>
using namespace std;
int Sol[1000100],N,K;
inline int  Bin_Search(int st,int dr,int x)
{
    if (st>dr) return 0;
    if (st==dr)
        {
            if (Sol[st]>=x) return st;
                else return 0;
        }
    int poz=(st+dr)/2;
    if (Sol[poz]<x) return Bin_Search(poz+1,dr,x);
    if (Sol[poz]>=x) return Bin_Search(st,poz,x);
}
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&N);
    for (int i=1;i<=N;++i)
    {
        int x,poz;
        scanf("%d",&x); poz=Bin_Search(1,K,x);
        if (poz!=0) Sol[poz]=x;
            else Sol[++K]=x;
    }
    printf("%d\n",K);
    for (int i=1;i<=K;++i)
        printf("%d ",Sol[i]);
    printf("\n");
    fclose(stdin); fclose(stdout);
    return 0;
}