Submission #720961

#TimeUsernameProblemLanguageResultExecution timeMemory
720961joelgun14Monochrome Points (JOI20_monochrome)C++17
35 / 100
2055 ms9180 KiB
#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    string s;
    cin >> s;
    vector<int> b, w;
    for(int i = 0; i < 2 * n; ++i) {
        if(s[i] == 'B')
            b.push_back(i + 1);
        else
            w.push_back(i + 1);
    }
    int prefb[4 * n + 1], prefw[4 * n + 1];
    memset(prefb, 0, sizeof(prefb));
    memset(prefw, 0, sizeof(prefw));
    //cout << "TEST" << endl;
    for(int i = 1; i <= 2 * n; ++i) {
        prefb[i] = prefb[i - 1];
        prefw[i] = prefw[i - 1];
        if(binary_search(b.begin(), b.end(), i))
            prefb[i]++;
        else
            prefw[i]++;
    }
    //cout << "PREF BUILD DONE" << endl;
    //cout << b.size() << " " << w.size() << endl;
    long long ans = 0;
    for(int i = 0; i < n; ++i) {
        // match b[i] dan w[i]
        long long res = 0;
        for(int j = 0; j < n; ++j) {
            int l = b[j], r = w[(i + j) % n];
            //cout << l << " " << r << endl;
            // cari antara l dan r
            // kalo misal r < l, maka + 2 * n
            if(r < l)
                swap(l, r);
            // pref[2 * n] - pref[r] + pref[l] buat seg 1
            // pref[r] - pref[l] buat seg 2
            int b1 = prefb[2 * n] - prefb[r] + prefb[l - 1], w1 = prefw[2 * n] - prefw[r] + prefw[l - 1];
            int b2 = prefb[r - 1] - prefb[l], w2 = prefw[r - 1] - prefw[l];
            //cout << b1 << " " << b2 << " " << w1 << " " << w2 << endl;
            res += min(b1, w2) + min(b2, w1);
        }
        //cout << res << " " << endl;
        ans = max(ans, res);
    }
    //cout << endl;
    cout << ans / 2 << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...