Pagini recente » Cod sursa (job #337690) | Cod sursa (job #1487963) | Monitorul de evaluare | Cod sursa (job #2280697) | Cod sursa (job #3202898)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <stack>
using namespace std;
#define NMAX 100001
ifstream fin("scmax.in");
ofstream fout("scmax.out");
stack<int> v[NMAX + 1];
vector<int> sol;
int main() {
int n, x;
fin>>n;
int p = 0;
for (int i = 1; i <= n; i++) {
fin>>x;
int k = 0;
while (!v[k].empty() && v[k].top() >= x) k++;
v[k].push(x);
if (k > p) p = k;
}
int mx = 0, imx;
for (int i = 0; i <= p; i++) {
if (!v[i].empty()) {
if (v[i].size() > mx) {
mx = v[i].size();
imx = i;
}
}
}
fout<<mx<<endl;
while (!v[imx].empty()) {
x = v[imx].top();
sol.push_back(x);
v[imx].pop();
}
sort(sol.begin(), sol.end());
for (auto i:sol) fout<<i<<" ";
return 0;
}