Cod sursa(job #2897628)

Utilizator disinfoion ion disinfo Data 4 mai 2022 12:44:27
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <iostream>
#define MAX 100010
#define INF 2000000002

using namespace std;
int v[MAX];
int sir[MAX];

int binsearch(int sir[], int k, int l, int r){
	int m = (l+r)/2;

	if(r - l == 1)
		return r;
	else if(sir[m] >= k)
		return binsearch(sir, k, l, m);
	else
		return binsearch(sir, k, m, r);

}


void update(int k, int n){
	int idx;
	
	idx = binsearch(sir, k, 1, n+1);
	sir[idx] = k;

}


int main(){
	ifstream fin;
	ofstream fout;
	fin.open("scmax.in");
	fout.open("scmax.out"); 
	int n, i;
	
	

	fin >> n;
	sir[1] = 0;
	for(i = 2; i <= n + 3; ++i)
		sir[i] = INF;


	for(int i=0; i < n; ++i){
		fin >> v[i];
		update(v[i], n);
	}
	int size = binsearch(sir, INF, 1, n+2) - 2;
	fout << size << "\n";
	for(int i=2; i<=size+1; ++i)
		fout << sir[i] << " ";

}