Pagini recente » Cod sursa (job #781243) | Cod sursa (job #1796252) | Cod sursa (job #2023237) | Cod sursa (job #647688) | Cod sursa (job #3208306)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
map<int, deque<int>> nums;
deque<int> answer;
deque<int> aux;
int numsSize;
void solve() {
int numLen;
fin >> numLen;
for (int i = 1; i <= numLen; ++i) {
int number;
fin >> number;
bool subsequenceFound = 0;
for (int j = 1; j <= numsSize; ++j) {
if (number > nums[j].back()) {
nums[j].push_back(number);
subsequenceFound = 1;
if (nums[j].size() > answer.size()) {
answer = nums[j];
}
}
}
nums[++numsSize].push_back(number);
if (nums[numsSize].size() > answer.size()) {
answer = nums[numsSize];
}
while (aux.empty() == 0 && number <= aux.back()) {
aux.pop_back();
}
aux.push_back(number);
if (aux.size() > answer.size()) {
answer = aux;
}
}
fout << answer.size() << '\n';
for (int i = 0; i < answer.size(); ++i) {
fout << answer[i] << ' ';
}
}
int main() {
solve();
return 0;
}
/*
8
13 12 12 30 30 14 30 2
=>
3
12 14 30
5
2 3 100 4 5
=>
4
2 3 4 5
6
100 3 99 4 98 5
=>
3
3 4 5
11
10 11 12 13 1 2 3 100 4 5 6
=>
6
1 2 3 4 5 6
1
2000000000
=>
1
2000000000
6
5 6 7 8 2 10
=>
5 4
5 6 7 8 10 (afiseaza 5 6 7 8)
*/