Submission #985217

#TimeUsernameProblemLanguageResultExecution timeMemory
985217CrazyBotBoySequence (APIO23_sequence)C++17
11 / 100
2065 ms51120 KiB
#include "sequence.h" #include <vector> #include <unordered_map> #include <set> #include <iostream> #include <algorithm> #include <map> using namespace std; // Helper function to add element to the multiset and update the frequency map void add_element(multiset<int>& lower, multiset<int>& upper, map<int, int>& freq, int element) { if (lower.empty() || element <= *lower.rbegin()) { lower.insert(element); } else { upper.insert(element); } // Balance the sets if (lower.size() > upper.size() + 1) { upper.insert(*lower.rbegin()); lower.erase(prev(lower.end())); } else if (upper.size() > lower.size()) { lower.insert(*upper.begin()); upper.erase(upper.begin()); } // Update frequency freq[element]++; } // Helper function to remove element from the multiset and update the frequency map void remove_element(multiset<int>& lower, multiset<int>& upper, map<int, int>& freq, int element) { if (lower.find(element) != lower.end()) { lower.erase(lower.find(element)); } else { upper.erase(upper.find(element)); } // Balance the sets if (lower.size() > upper.size() + 1) { upper.insert(*lower.rbegin()); lower.erase(prev(lower.end())); } else if (upper.size() > lower.size()) { lower.insert(*upper.begin()); upper.erase(upper.begin()); } // Update frequency freq[element]--; if (freq[element] == 0) { freq.erase(element); } } // Function to get the median from the two balanced sets int get_median(const multiset<int>& lower, const multiset<int>& upper) { return *lower.rbegin(); } int sequence(int N, vector<int> A) { int maxOccurrences = 0; for (int l = 0; l < N; ++l) { multiset<int> lower, upper; map<int, int> freq; for (int r = l; r < N; ++r) { add_element(lower, upper, freq, A[r]); int median = get_median(lower, upper); maxOccurrences = max(maxOccurrences, freq[median]); } } 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...