Submission #75259765


Source Code Expand

#line 2 "/Users/blue_jam/ProconLibrary/misc/template.hpp"

#include <atcoder/all>
#include <bits/stdc++.h>

using namespace std;
using namespace atcoder;

#define ALL(x) (x).begin(), (x).end()

using ll = long long;
#ifndef EPS
const double eps = 1e-10;
#else
const double eps = EPS;
#endif
#line 2 "abc455/E/main.cpp"


void solve(long long N, std::string S) {
    for (ll i = 0; i < N; i++) {
        S[i] -= 'A';
    }
    ll t[3][3];
    map<ll, vector<ll>> mp[3][3];
    map<pair<ll,ll>, ll> mp2;
    for (ll i = 0; i < 3; i++) {
        for (ll j = i + 1; j < 3; j++) {
            t[i][j] = 0;
            mp[i][j][0].push_back(0);
        }
    }
    mp2[{0, 0}]++;
    for (ll i = 0; i < N; i++) {
        for (ll j = 0; j < 3; j++) {
            for (ll k = j + 1; k < 3; k++) {
                if (S[i] == j) {
                    t[j][k]++;
                } else if (S[i] == k) {
                    t[j][k]--;
                }
                mp[j][k][t[j][k]].push_back(i + 1);
            }
        }
        mp2[{t[0][1], t[1][2]}]++;
    }
    ll ans = 0;
    for (ll i = 0; i < 3; i++) {
        for (ll j = i + 1; j < 3; j++) {
            for (auto &&[t, v] : mp[i][j]) {
                ll n = v.size();
                ans += n * (n - 1) / 2;
            }
        }
    }
    for (auto [p, n] : mp2) {
        // cerr << p.first << "," << p.second << ":" << n << endl;
        ans -= n * (n - 1);
    }
    cout << N * (N + 1) / 2 - ans << endl;
}

int main() {
    long long N;
    std::scanf("%lld", &N);
    std::string S;
    std::cin >> S;
    solve(N, S);
    return 0;
}

Submission Info

Submission Time
Task E - Unbalanced ABC Substrings
User blue_jam
Language C++23 (GCC 15.2.0)
Score 450
Code Size 1673 Byte
Status AC
Exec Time 155 ms
Memory 61784 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 450 / 450
Status
AC × 3
AC × 36
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_01.txt, 01_02.txt, 01_03.txt, 01_04.txt, 01_05.txt, 01_06.txt, 01_07.txt, 01_08.txt, 01_09.txt, 01_10.txt, 01_11.txt, 01_12.txt, 01_13.txt, 01_14.txt, 01_15.txt, 01_16.txt, 01_17.txt, 01_18.txt, 01_19.txt, 01_20.txt, 01_21.txt, 01_22.txt, 02_01.txt, 02_02.txt, 02_03.txt, 02_04.txt, 02_05.txt, 02_06.txt, 03_1.txt, 03_2.txt, 03_3.txt, 04_1.txt, 04_2.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 1 ms 3756 KiB
00_sample_02.txt AC 1 ms 3784 KiB
00_sample_03.txt AC 1 ms 3772 KiB
01_01.txt AC 1 ms 3712 KiB
01_02.txt AC 1 ms 3636 KiB
01_03.txt AC 1 ms 3828 KiB
01_04.txt AC 1 ms 3772 KiB
01_05.txt AC 1 ms 3700 KiB
01_06.txt AC 1 ms 3712 KiB
01_07.txt AC 1 ms 3708 KiB
01_08.txt AC 1 ms 3644 KiB
01_09.txt AC 1 ms 3644 KiB
01_10.txt AC 1 ms 3740 KiB
01_11.txt AC 31 ms 10288 KiB
01_12.txt AC 76 ms 24892 KiB
01_13.txt AC 3 ms 4352 KiB
01_14.txt AC 73 ms 23992 KiB
01_15.txt AC 47 ms 13532 KiB
01_16.txt AC 4 ms 5052 KiB
01_17.txt AC 49 ms 13588 KiB
01_18.txt AC 135 ms 41928 KiB
01_19.txt AC 53 ms 14656 KiB
01_20.txt AC 122 ms 41828 KiB
01_21.txt AC 51 ms 14300 KiB
01_22.txt AC 117 ms 41948 KiB
02_01.txt AC 155 ms 61768 KiB
02_02.txt AC 150 ms 61700 KiB
02_03.txt AC 150 ms 61660 KiB
02_04.txt AC 145 ms 61784 KiB
02_05.txt AC 149 ms 61728 KiB
02_06.txt AC 149 ms 61728 KiB
03_1.txt AC 11 ms 11144 KiB
03_2.txt AC 11 ms 11296 KiB
03_3.txt AC 11 ms 11264 KiB
04_1.txt AC 117 ms 40236 KiB
04_2.txt AC 114 ms 40224 KiB