Official
B - A..B..C Editorial
by
解説
B - A..B..C Editorial
by
yuto1115
解説
三重の for 文等を用いて \((i,j,k)\ (1\leq i<j<k\leq|S|)\) の組を全探索し、それぞれの組について条件を満たすかどうか判定して、条件を満たすものの数を数えればよいです。
具体的な実装方法については、下記の実装例 (C++, Python) を参考にしてください。
Bonus (ABC-C 相当): \(O(|S|^2)\) で解いてください。
Bonus+ (ABC-F 相当): \(O(|S|\log^2 |S|)\) で解いてください。
実装例 (C++) :
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.size();
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
if (j - i == k - j and s[i] == 'A' and s[j] == 'B' and s[k] == 'C') ++ans;
}
}
}
cout << ans << endl;
}
実装例 (Python) :
s = input()
n = len(s)
ans = 0
for i in range(n):
for j in range(i + 1, n):
for k in range(j + 1, n):
if j - i == k - j and s[i] == 'A' and s[j] == 'B' and s[k] == 'C':
ans += 1
print(ans)
posted:
last update: