Pagini recente » Cod sursa (job #2980480) | Cod sursa (job #2645924) | Cod sursa (job #2601877) | Cod sursa (job #80954) | Cod sursa (job #2698707)
#include <bits/stdc++.h>
#define ll long long
#define cin fin
#define cout fout
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, v[100005];
int maxSubArrSize[100005], prevIndex[100005];
void printSubArr(int currIndex) {
if (!currIndex)
return;
printSubArr(prevIndex[currIndex]);
cout << v[currIndex] << ' ';
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> v[i];
maxSubArrSize[i] = 1;
}
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
if (v[i] < v[j] && maxSubArrSize[i] + 1 > maxSubArrSize[j]) {
maxSubArrSize[j] = maxSubArrSize[i] + 1;
prevIndex[j] = i;
}
int maxSubArr = 0, lastIndex;
for (int i = 1; i <= n; i++)
if (maxSubArr < maxSubArrSize[i]) {
maxSubArr = maxSubArrSize[i];
lastIndex = i;
}
cout << maxSubArr << '\n';
printSubArr(lastIndex);
return 0;
}