Pagini recente » Cod sursa (job #1494425) | Cod sursa (job #2906780) | Diferente pentru problema/inel intre reviziile 3 si 4 | Cod sursa (job #2673024) | Cod sursa (job #818904)
Cod sursa(job #818904)
#include <fstream>
#include <stack>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int MAX_N = 100100;
int v[MAX_N];
int pd[MAX_N];
int rec[MAX_N];
int N;
stack<int> st;
int main() {
fin >> N;
for (int i = 1; i <= N; ++i) {
fin >> v[i];
}
int result = 0, pos = 0;
for (int i = 1; i <= N; ++i) {
for (int j = 0; j < i; ++j) {
if (v[i] > v[j] && pd[j] + 1 > pd[i]) {
pd[i] = pd[j] + 1;
rec[i] = j;
if (pd[i] > result) {
result = pd[i];
pos = i;
}
}
}
}
for (int i = result; i > 0; --i) {
st.push(pos);
pos = rec[pos];
}
fout << result << '\n';
while (!st.empty()) {
fout << v[st.top()] << ' ';
st.pop();
}
return 0;
}