Pagini recente » Cod sursa (job #1604077) | Cod sursa (job #1481058) | Cod sursa (job #2798081) | Cod sursa (job #1212957) | Cod sursa (job #3208303)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int MAX_SIZE = 100000;
const int MAX_LENGTH = 100000;
deque<int> nums[MAX_SIZE + 1];
deque<int> answer;
deque<int> aux;
int numsSize;
void solve() {
int numLen;
fin >> numLen;
int numbers[MAX_LENGTH + 1];
for (int i = 1; i <= numLen; ++i) {
fin >> numbers[i];
bool subsequenceFound = 0;
for (int j = 1; j <= numsSize; ++j) {
if (numbers[i] > nums[j].back()) {
nums[j].push_back(numbers[i]);
subsequenceFound = 1;
if (nums[j].size() > answer.size()) {
answer = nums[j];
}
}
}
nums[++numsSize].push_back(numbers[i]);
if (nums[numsSize].size() > answer.size()) {
answer = nums[numsSize];
}
while (aux.empty() == 0 && numbers[i] <= aux.back()) {
aux.pop_back();
}
aux.push_back(numbers[i]);
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)
*/