Cod sursa(job #1784851)

Utilizator popa.andreiPopa Andrei popa.andrei Data 20 octombrie 2016 16:16:39
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;

int N,k,i;
int a[100005], s[100005];
unordered_map<int,int> parent,nxt;
//int parent[100],nxt[100];
void afis(int o) {
	if(parent[o] > 0)
		afis(parent[o]);
	
	cout << o << " ";

}
int main() {
//	freopen("f.txt","r",stdin);
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out", "w", stdout);
	cin >> N;
	for(i = 0; i < N; i++) 
		cin >> a[i];
	s[k++] = a[0];
	for(int j = 1; j < N; j++) {
		int idx = std::lower_bound(s,s + k,a[j]) - s;
		if(idx != k) {
		//	if(parent[s[idx]] == a[j])
		//		continue;
			parent[a[j]] = parent[s[idx]];
		//	nxt[parent[s[idx]]] = a[j];
		//	parent[nxt[s[idx]]] = a[j];
			s[idx] = a[j];
			
		}
		else {
			parent[a[j]] = s[k - 1];
		//	nxt[s[k - 1]] = a[j];
			s[k++] = a[j];
			
		}
		for(i = 0; i < k; i++)
			cout << s[i] << " ";
		cout << '\n';
	}
	cout << k << '\n';
	afis(s[k - 1]);


	return 0;
}