Pagini recente » Cod sursa (job #2399839) | Cod sursa (job #382758) | Cod sursa (job #122365) | Cod sursa (job #486435) | Cod sursa (job #1784860)
#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;
int N,k,i;
int a[100015], s[100015];
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;
}