Cod sursa(job #2072968)

Utilizator IsacLucianIsac Lucian IsacLucian Data 22 noiembrie 2017 15:38:52
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

int k,dp[100002],n,a[100002];

int Caut_bin(int x)
{
    int st,dr,mij,p;
    st=1;
    dr=k;
    p=0;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(dp[mij]>=x)
        {
            p=mij;
            dr=mij-1;
        }
        else st=mij+1;
    }
   return p;
}

int main()
{
    int i;

    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];

    k=1;
    dp[k]=a[1];

    for(i=2;i<=n;i++)
    {
        if(a[i]>dp[k])dp[++k]=a[i];
        else if(a[i]<dp[1])
        {
            k=1;
            dp[k]=a[i];
        }
        else
        {
            k=Caut_bin(a[i]);
            dp[k]=a[i];
        }
    }

    fout<<k<<"\n";
    for(i=1;i<=k;i++)
        fout<<dp[i]<<" ";
    return 0;
}