Cod sursa(job #1558610)

Utilizator theodor.moroianuTheodor Moroianu theodor.moroianu Data 29 decembrie 2015 13:52:16
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
using namespace std;

const int NMAX = 100001;
int v[NMAX];
int c = 0;

inline int cbin(int x);

int main() {
	ifstream in("scmax.in");
	int n, cit, x;
	in >> n >> v[0];
	for (int i = 1; i < n; i++) {
		in >> cit;
		if (cit > v[c]) {
			v[++c] = cit;
			continue;
		}
		x = cbin(cit);
		v[x] = cit;
	}
	ofstream out("scmax.out");
	out << c + 1 << '\n';
	for (int i = 0; i <= c; i++)
		out << v[i] << ' ';
	in.close();
	out.close();
	return 0;
}

int cbin(int x) {
	int a = -1, b = 1 << 30;
	while (b > 0) {
		if (a + b <= c && v[a + b] < x)
			a += b;
		b /= 2;
	}
	return a + 1;
}