Submission #985537

#TimeUsernameProblemLanguageResultExecution timeMemory
985537ag_1204Sequence (APIO23_sequence)C++17
0 / 100
2039 ms5812 KiB
#include<bits/stdc++.h>
using namespace std;

void balance(multiset<int> s, multiset<int> t) {
    while (s.size() > t.size() + 1) {
        t.insert(*s.rbegin());
        s.erase(prev(s.end()));
    }
    while (t.size() > s.size()) {
        s.insert(*t.begin());
        t.erase(t.begin());
    }
}

int sequence(int N, std::vector<int> A) {
    int ans=0;
    for (int i=0;i<N;i++) {
        map<int,int> m;
        multiset<int> low, high;
        for (int j=i;j<N;j++) {
            if (low.empty() || A[j]<=*low.rbegin()) {
                low.insert(A[j]);
            } else {
                high.insert(A[j]);
            }
            balance(low,high);
            m[A[j]]++;
            int m1 = *low.rbegin();
            int m2 = (low.size()+high.size())%2==0?*high.begin():m1;
            int occ1 = m[m1], occ2=m[m2];
            ans = max(ans,(max(occ1,occ2)));
        }
    }
    return 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...