Pagini recente » Cod sursa (job #3271743) | Cod sursa (job #2448007) | Cod sursa (job #84154) | Cod sursa (job #1647625) | Cod sursa (job #1784851)
#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;
}