Cod sursa(job #1946222)

Utilizator KOzarmOvidiu Badea KOzarm Data 29 martie 2017 23:14:38
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

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

int a[100003],b[100003],n,x;

void plaseaza(int x)
{
    if(a[a[0]]<x)
        a[++a[0]]=x;
    if(b[b[0]]<x)
        b[++b[0]]=x;
    else
    {
        int in=1,fi=b[0],mid;
        while(in<=fi)
        {
            mid=(in+fi)/2;
            if(b[mid]<x)
                in=mid+1;
            else
            if(b[mid]==x)
                break;
            else
                fi=mid-1;
        }
        b[mid]=x;
    }
    if(b[0]>a[0])
        for(int i=0;i<=b[0];i++)
            a[i]=b[i];
}


int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>x;
        plaseaza(x);
    }
    fout<<a[0]<<"\n";
    for(int i=1;i<=a[0];i++)
        fout<<a[i]<<" ";
    return 0;
}