Pagini recente » Cod sursa (job #368464) | Cod sursa (job #944722) | Cod sursa (job #944952) | Cod sursa (job #944951) | Cod sursa (job #3311240)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
const int N_MAX = 100000;
int n;
int v[N_MAX + 5], lungime[N_MAX + 5], pozitie[N_MAX + 5], sol[N_MAX + 5];
int main() {
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
int maxim = 1, poz = 1;
for (int i = 1; i <= n; i++) {
lungime[i] = 1;
pozitie[i] = -67;
for (int j = 1; j < i; j++) {
if (v[i] > v[j] && lungime[i] < lungime[j] + 1) {
lungime[i] = lungime[j] + 1;
pozitie[i] = j;
}
}
if (lungime[i] > maxim) {
maxim = lungime[i];
poz = i;
}
}
fout << maxim << "\n";
int m = 0;
while (poz != -67) {
sol[++m] = poz;
poz = pozitie[poz];
}
for (int i = m; i >= 1; i--)
fout << v[sol[i]] << " ";
fout << "\n";
return 0;
}