Cod sursa(job #1645048)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 10 martie 2016 10:48:39
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <iostream>
#define DIM 100005

using namespace std;

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

int N,v[DIM];
int w[DIM];
int nr;

int main(){

    fin >> N;

    for(int i=1;i<=N;i++){
        fin >> v[i];
        if(v[i]>v[w[nr]])
            w[++nr]=i;
        else{
            int p=1;
            int u=nr;
            while(p<=u){
                int mid=(p+u)>>1;
                if(v[i]>v[w[mid]])
                    p=mid+1;
                else
                    u=mid-1;
            }

            p--;

            if(v[i]>v[w[p]]){
                w[p+1]=i;
            }
        }
    }

    fout << nr << "\n";

    for(int i=1;i<=nr;i++)
        fout << v[w[i]] << " ";

}