結果
問題 | No.2419 MMA文字列2 |
ユーザー |
![]() |
提出日時 | 2023-08-12 14:02:25 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,094 bytes |
コンパイル時間 | 1,933 ms |
コンパイル使用メモリ | 174,192 KB |
実行使用メモリ | 29,440 KB |
最終ジャッジ日時 | 2024-11-19 17:06:48 |
合計ジャッジ時間 | 3,322 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 26 WA * 4 |
ソースコード
#include <bits/stdc++.h>using namespace std;#define rep(i, a, b) for (int i = (int)(a); (i) < (int)(b); (i)++)#define rrep(i, a, b) for (int i = (int)(b) - 1; (i) >= (int)(a); (i)--)#define all(v) v.begin(), v.end()typedef long long ll;template <class T> using V = vector<T>;template <class T> using VV = vector<V<T>>;V<int> G[200010];V<bool> used(200010);int nc = 0;void f(int k) {used[k] = 1;nc++;rep(i,0,G[k].size()) {int to = G[k][i];if (used[to]) continue;f(to);}}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);constexpr char endl = '\n';string s;cin >> s;VV<int> v(26, V<int>(s.size()));rep(i,0,s.size()) {v[s[i]-'A'][i]++;if (i != 0) {rep(j,0,26) {v[j][i] += v[j][i-1];}}}ll ans = 0;rep(i,1,s.size()-1) {int lft = v[s[i]-'A'][i-1];int rt = s.size() - i - 1 - v[s[i]-'A'][s.size()-1] + v[s[i]-'A'][i];ans += lft * rt;}cout << ans << endl;return 0;}