結果
問題 |
No.2102 [Cherry Alpha *] Conditional Reflection
|
ユーザー |
![]() |
提出日時 | 2022-08-13 17:00:44 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,019 bytes |
コンパイル時間 | 1,047 ms |
コンパイル使用メモリ | 90,348 KB |
最終ジャッジ日時 | 2025-01-30 22:18:39 |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 60 TLE * 10 |
ソースコード
#include <iostream> #include <map> #include <string> #include <vector> using namespace std; bool check(const string &s, const string &t) { static const int ALL_SAME = -10; static const int SWAPED = -11; if(s.size() != t.size()) return false; int prv = ALL_SAME; for(int i = 0; i < (int)s.size(); i++) { if(s[i] != t[i]) { if(prv == ALL_SAME) prv = i; else if(prv == i-1) prv = SWAPED; else return false; } } return prv < 0; } int main() { int n; cin >> n; vector<string> s(n); for(auto &i : s) cin >> i; vector<bool> ans(n); map<vector<int>, vector<string>> mp; for(int i = 0; i < n; i++) { vector<int> cnt(26); for(auto &j : s[i]) cnt[j-'a']++; for(auto &t : mp[cnt]) { if(check(s[i], t)) { ans[i] = true; break; } } mp[cnt].emplace_back(s[i]); } for(auto &&i : ans) cout << ((i) ? "Yes" : "No") << endl; }