Pagini recente » Cod sursa (job #2399990) | Cod sursa (job #2866592) | Cod sursa (job #1992926) | Cod sursa (job #2809037) | Cod sursa (job #1426774)
#include <iostream>
#include <vector>
#include <fstream>
#define ll long long
using namespace std;
int dp[100000];
int main()
{
ll n;
int v[100000];
int cnt = 0;
ifstream f("scmax.in");
ofstream g("scmax.out");
f >> n;
for (int i = 0; i < n; i++)
f >> v[i];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < i; ++j) {
if (v[i] > v[j]) {
dp[i] = dp[j] + 1;
if (dp[i] > cnt)
cnt = dp[i];
}
}
}
g << cnt + 1 << endl;
long long last = 100000;
vector <int> result;
for (int i = n; i >= 0; --i) {
if (dp[i] == cnt && dp[i] < last) {
last = dp[i];
result.push_back(v[i]);
--cnt;
}
}
for (int i = result.size() - 1; i >= 0; i--)
g << result[i] << " ";
f.close();
g.close();
return 0;
}