Submission #1189400

#TimeUsernameProblemLanguageResultExecution timeMemory
1189400Thanhs서열 (APIO23_sequence)C++20
28 / 100
2092 ms10300 KiB
#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define endl '\n'
#define setmin(x, y) x = min((x), (y))
#define setmax(x, y) x = max((x), (y))
#define sqr(x) ((x) * (x))
#define all(x) x.begin(), x.end()

int sequence(int N, vector<int> A)
{
    int ans = 0;
    vector<int> c(N + 1);
    vector<bool> b(N + 1);
    for (int i = 0; i < N; i++)
    {
        priority_queue<int> L;
        priority_queue<int, vector<int>, greater<>> R;
        for (int j = i; j < N; j++)
        {
            c[A[j]]++;
            if (L.empty() || A[j] <= L.top())
                L.push(A[j]);
            else
                R.push(A[j]);
            if (L.size() > R.size() + 1)
                R.push(L.top()), L.pop();
            if (R.size() > L.size() + 1)
                L.push(R.top()), R.pop();
            int res = 0;
            if (L.size() >= R.size())
                setmax(res, c[L.top()]);
            if (R.size() >= L.size())
                setmax(res, c[R.top()]);
            if (L.size() && R.size())
                assert(L.top() <= R.top());
            b[res] = 1;
            setmax(ans, res);
        }
        for (int j = i; j < N; j++)
            c[A[j]]--;
    }
    // for (int i = 1; i <= ans; i++)
    //     assert(b[i]);
    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...