結果

問題 No.3798 algo to goal
ユーザー テナガザル
提出日時 2026-11-13 23:06:37
言語 C++23
(gcc 15.3.0 + boost 1.92.0 + ACL)
コンパイル:
g++-15 -O2 -fplugin=/usr/lib/yukicoder/noavx512-gcc15.so -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 254 ms / 2,000 ms
+ 34µs
コード長 1,148 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,365 ms
コンパイル使用メモリ 184,168 KB
実行使用メモリ 9,716 KB
最終ジャッジ日時 2026-11-13 23:07:11
合計ジャッジ時間 9,773 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge5_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 40
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void solve()
{
  string s, t;
  cin >> s >> t;
  int n = s.size();
  vector<string> ss(2), tt(2);
  for (int i = 0; i < n; ++i)
  {
    ss[i % 2].push_back(s[i]);
    tt[i % 2].push_back(t[i]);
  }
  for (int i = 0; i < 2; ++i)
  {
    auto tmps = ss[i], tmpt = tt[i];
    sort(tmps.begin(), tmps.end());
    sort(tmpt.begin(), tmpt.end());
    if (tmps != tmpt)
    {
      cout << "No\n";
      return;
    }
  }
  for (int i = 0; i < 2; ++i)
  {
    vector<int> cnt(26);
    for (auto c : ss[i]) ++cnt[c - 'a'];
    for (int j = 0; j < 26; ++j)
    {
      if (cnt[j] > 1)
      {
        cout << "Yes\n";
        return;
      }
    }
  }
  auto calinv = [](const string &s) -> int
  {
    vector<int> cnt(26);
    int ret = 0;
    for (auto c : s)
    {
      for (int j = c - 'a'; j < 26; ++j) ret += cnt[j];
      ++cnt[c - 'a'];
    }
    return ret;
  };
  if ((calinv(ss[0]) + calinv(tt[0])) % 2 != (calinv(ss[1]) + calinv(tt[1])) % 2)
  {
    cout << "No\n";
    return;
  }
  cout << "Yes\n";
}

int main()
{
  int t;
  cin >> t;
  while (t--) solve();
}
0