Pagini recente » Cod sursa (job #1751195) | Cod sursa (job #1956188) | Cod sursa (job #366361) | Cod sursa (job #810478) | Cod sursa (job #2909425)
#include<fstream>
#include<climits>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
#define maximumLength 100001
int n, DP[maximumLength], arr[maximumLength][2],position;
void solution() {
int i, j;
int maxi = 1;
DP[n] = 1;
arr[n][1] = -1;
position = n;
for (i = n-1; i >= 1; i--) {
DP[i] = 1;
arr[i][1] = -1;
for (j = i+1; j <= n; j++) {
if (arr[j][0] > arr[i][0] && DP[i]<DP[j]+1) {
DP[i] = DP[j] + 1;
arr[i][1] = j;
if (DP[i] > maxi) {
maxi = DP[i];
position = i;
}
}
}
}
cout << maxi << '\n';
i = position;
while (i != -1) {
cout << arr[i][0]<<" ";
i = arr[i][1];
}
}
int main() {
int i,j;
cin >> n;
for (i = 1; i <= n; i++) {
cin >> arr[i][0];
}
solution();
}