結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}
0