Cod sursa(job #2897638)

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

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

class node{
	public:
		int data;
		int key;
		int prev_key;
};

node sir[MAX];

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

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

}


void update(int key, int k, int n){
	int idx;
	
	idx = binsearch(k, 1, n+1);

	sir[idx].data = k;
	sir[idx].key = key;
	sir[idx].prev_key = sir[idx - 1].key;



}


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

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


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

}