結果
問題 |
No.3110 Like CPCTF?
|
ユーザー |
![]() |
提出日時 | 2025-06-05 22:55:48 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,145 bytes |
コンパイル時間 | 2,075 ms |
コンパイル使用メモリ | 178,692 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-05 22:55:51 |
合計ジャッジ時間 | 3,057 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 16 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i < b; i++) using ll = long long; int main(){ int N; string s; cin >> N >> s; map<char, int> mp; vector<map<char, int>> mpv(N); for(int i = N - 1; i >= 0; i--) { mp[s[i]]++; mpv[i] = mp; } vector<vector<int>> c(26); rep(i, 0, N) { int n = s[i] - 'A'; c[n].push_back(i); } ll ans = 0; rep(i, 0, 26) { int sz = c[i].size(); if(sz < 2) continue; char c2 = (char)(i + 'A'); rep(j, 0, sz) { rep(k, j + 1, sz) { int l = c[i][j]; int r = c[i][k]; if(r - l < 2 || r + 1 >= N) continue; map<char, int> tmp = mpv[r + 1]; using P = pair<char, int>; vector<P> p; for(auto it = tmp.begin(); it != tmp.end(); it++) { char f = it->first; if(f == c2) continue; p.push_back(P(f, it->second)); } int sz = p.size(); rep(m, l + 1, r) { if(s[m] == c2) continue; rep(n, 0, sz) { if(p[n].first == s[m]) continue; rep(o, n + 1, sz) { if(p[o].first == s[m]) continue; ans += p[n].second * p[o].second; } } } } } } cout << ans << endl; }