Pagini recente » Cod sursa (job #2030589) | Cod sursa (job #2485048) | Cod sursa (job #2076254) | Cod sursa (job #3131556) | Cod sursa (job #1276386)
//#include <iostream>
#include <fstream>
using namespace std;
int maxim[100100], pre[10010], suc[100100], v[100100];
int main() {
ifstream in("scmax.in");
ofstream out("scmax.out");
int n, i, j, maxi = 0;
in >> n;
for (i = 1; i <= n; i++)
in >> v[i];
maxim[0] = 0;
for (i = 1; i <= n; ++i) {
maxim[i] = 0;
for (j = 1; j < i; ++j) {
if (v[j] < v[i]) {
if (maxim[j] > maxim[i]) {
maxim[i] = maxim[j];
pre[i] = j;
}
}
}
++maxim[i];
if (maxim[i] > maxim[maxi])
maxi = i;
}
out << maxim[maxi] << "\n";
int k = 0;
while (maxi) {
suc[maxi] = k;
k = maxi;
maxi = pre[maxi];
}
while (k) {
out << v[k] << " ";
k = suc[k];
}
in.close();
out.close();
return 0;
}