제출 #985205

#제출 시각아이디문제언어결과실행 시간메모리
985205CrazyBotBoy서열 (APIO23_sequence)C++17
28 / 100
2051 ms49112 KiB
#include "sequence.h"
#include <vector>
#include <unordered_map>
#include <set>
#include <iostream>

using namespace std;

int sequence(int N, vector<int> A) {
    int maxOccurrences = 0;

    // Iterate over each possible starting point of subarray
    for (int l = 0; l < N; ++l) {
        unordered_map<int, int> freq; // Frequency map for current subarray
        multiset<int> lower, upper;   // Two multisets to manage medians

        // Iterate over each possible ending point of subarray starting from 'l'
        for (int r = l; r < N; ++r) {
            int num = A[r];
            
            // Insert the number into one of the heaps
            if (lower.empty() || num <= *lower.rbegin()) {
                lower.insert(num);
            } else {
                upper.insert(num);
            }

            // Balance the heaps
            while (lower.size() > upper.size() + 1) {
                upper.insert(*lower.rbegin());
                lower.erase(prev(lower.end()));
            }
            while (upper.size() > lower.size()) {
                lower.insert(*upper.begin());
                upper.erase(upper.begin());
            }

            // Update frequency map
            freq[num]++;
            
            // Find the current medians
            int median1 = *lower.rbegin();
            int median2 = (lower.size() + upper.size()) % 2 == 0 ? *upper.begin() : median1;

            // Update maxOccurrences with frequency of the current medians
            maxOccurrences = max(maxOccurrences, freq[median1]);
            if (median1 != median2) {
                maxOccurrences = max(maxOccurrences, freq[median2]);
            }
        }
    }

    return maxOccurrences;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...