Cod sursa(job #3208304)

Utilizator KRISTY06Mateiu Ianis Cristian Vasile KRISTY06 Data 28 februarie 2024 11:05:55
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda 28_februarie_simulare_oji_2024_clasele_11_12 Marime 1.51 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

const int MAX_SIZE = 100000;

deque<int> nums[MAX_SIZE + 1];
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)
*/