結果
| 問題 | No.2102 [Cherry Alpha *] Conditional Reflection | 
| コンテスト | |
| ユーザー |  sapphire__15 | 
| 提出日時 | 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;
}
            
            
            
        