Submission #981902

#TimeUsernameProblemLanguageResultExecution timeMemory
981902vjudge1Sequence (APIO23_sequence)C++17
28 / 100
2071 ms31856 KiB
#include "sequence.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using vll = vector <ll>; using vi = vector <int>; using ii = pair <ll, ll>; using vii = vector <ii>; int sequence (int n, vi ve) { for (int &i : ve) i--; ll ans = 0; for (ll l = 0; l < n; l++) { multiset <ll, greater <ll> > st1; // big to small (mid...0) multiset <ll> st2; // small to big (mid...n) vll freq(n, 0); for (ll r = l; r < n; r++) { ll mid = (st2.size() ? *st2.begin() : 0); freq[ve[r]]++; if (ve[r] >= mid) st2.insert(ve[r]); else st1.insert(ve[r]); while (st2.size() > st1.size()) { st1.insert(*st2.begin()); st2.erase(st2.begin()); } while (st1.size() > st2.size()) { st2.insert(*st1.begin()); st1.erase(st1.begin()); } if (st1.size() == st2.size()) { // two medians ll med1 = *st1.begin(); ll med2 = *st2.begin(); ans = max(ans, freq[med1]); ans = max(ans, freq[med2]); } else { // one median assert(st2.size() > st1.size()); ll med = *st2.begin(); ans = max(ans, freq[med]); } } } return int(ans); }
#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...