Please sign in first.
提出 #76079892
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define LONGMAX 1e18
#define INTMAX 2147483647
#include <bits/stdc++.h>
using namespace std;
int main()
{
ll T;
cin >> T;
for (ll i = 0; i < T; i++)
{
string S;
cin >> S;
ll N = S.length();
vector<ll> cnt(26, 0);
for (ll j = 0; j < N; j++)
{
cnt[S[j] - 'a']++;
}
if ((*max_element(cnt.begin(), cnt.end())) > ((N + 1) / 2))
{ // 一番多い文字がM個あったとしたら、M-1個の隙間を埋める必要があり、使える文字はN-M個、つまりN-M<M-1, (N+1)/2<Mで埋められない, このときはNo
cout << "No" << endl;
continue;
}
priority_queue<pair<ll, char>> pq;
for (ll j = 0; j < 26; j++)
{
if (cnt[j] != 0)
pq.push({cnt[j], 'a' + j});
}
string ans;
while (pq.size() >= 2) // 2つずつ取り出すので1個以下になったら終了
{
auto [c1, ch1] = pq.top();
pq.pop();
auto [c2, ch2] = pq.top();
pq.pop();
ans += ch1;
ans += ch2; // 交互に連結させていく
c1--; // 在庫が0になるまで
c2--;
if (c1 != 0)
pq.push({c1, ch1});
if (c2 != 0)
pq.push({c2, ch2});
}
if (!pq.empty()) // 1個残っていたら連結
{
ans += pq.top().second;
}
cout << "Yes" << endl;
cout << ans << endl;
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - Adjacent Distinct String |
| ユーザ | lalashvbp |
| 言語 | C++23 (GCC 15.2.0) |
| 得点 | 400 |
| コード長 | 1709 Byte |
| 結果 | AC |
| 実行時間 | 238 ms |
| メモリ | 7176 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 400 / 400 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt |
| All | 00_sample_00.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3532 KiB |
| 01_handmade_00.txt | AC | 238 ms | 3472 KiB |
| 01_handmade_01.txt | AC | 84 ms | 3600 KiB |
| 01_handmade_02.txt | AC | 14 ms | 5396 KiB |
| 01_handmade_03.txt | AC | 17 ms | 7140 KiB |
| 01_handmade_04.txt | AC | 17 ms | 7168 KiB |
| 01_handmade_05.txt | AC | 20 ms | 3644 KiB |
| 02_random_00.txt | AC | 39 ms | 7000 KiB |
| 02_random_01.txt | AC | 38 ms | 6996 KiB |
| 02_random_02.txt | AC | 39 ms | 7136 KiB |
| 02_random_03.txt | AC | 13 ms | 5416 KiB |
| 02_random_04.txt | AC | 13 ms | 5256 KiB |
| 02_random_05.txt | AC | 13 ms | 5348 KiB |
| 02_random_06.txt | AC | 13 ms | 5240 KiB |
| 02_random_07.txt | AC | 25 ms | 7176 KiB |
| 02_random_08.txt | AC | 27 ms | 3644 KiB |
| 02_random_09.txt | AC | 23 ms | 3440 KiB |
| 02_random_10.txt | AC | 18 ms | 3524 KiB |
| 02_random_11.txt | AC | 18 ms | 3592 KiB |
| 02_random_12.txt | AC | 17 ms | 3568 KiB |
| 02_random_13.txt | AC | 16 ms | 3612 KiB |