Submission #74976271


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

/**
めっちゃbacktrackぽい
Sの全てのパターンの並び方のK番目
注意なのが、重複はカウントしないこと

*/
static bool backtrack(string &current, string &remaining, int &K) {
  if (remaining.empty()) {
    K--;
    if (K == 0) {
      cout << current << endl;
      return true;
    }
    return false;
  }

  int n = remaining.size();
  for (int i = 0; i < n; i++) {
    if (i > 0 && remaining[i] == remaining[i - 1]) continue;
    // 1文字選ぶ
    current.push_back(remaining[i]);

    // 残りを作る
    string next = remaining.substr(0, i) + remaining.substr(i + 1);
    if (backtrack(current, next, K)) return true;

    current.pop_back();
  }
  return false;
}

int main() {
  string S;
  int K;
  cin >> S >> K;

  // 辞書順にするためにまずソート
  sort(S.begin(), S.end());

  string current;
  backtrack(current, S, K);
  return 0;
}

Submission Info

Submission Time
Task E - One More aab aba baa
User nkoji21
Language C++23 (GCC 15.2.0)
Score 300
Code Size 991 Byte
Status AC
Exec Time 4 ms
Memory 6544 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 19
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt
Case Name Status Exec Time Memory
sample_01.txt AC 3 ms 6344 KiB
sample_02.txt AC 2 ms 6300 KiB
sample_03.txt AC 4 ms 6544 KiB
test_01.txt AC 2 ms 6384 KiB
test_02.txt AC 2 ms 6420 KiB
test_03.txt AC 2 ms 6288 KiB
test_04.txt AC 2 ms 6344 KiB
test_05.txt AC 2 ms 6536 KiB
test_06.txt AC 2 ms 6412 KiB
test_07.txt AC 2 ms 6544 KiB
test_08.txt AC 2 ms 6288 KiB
test_09.txt AC 3 ms 6252 KiB
test_10.txt AC 2 ms 6412 KiB
test_11.txt AC 3 ms 6288 KiB
test_12.txt AC 2 ms 6300 KiB
test_13.txt AC 3 ms 6300 KiB
test_14.txt AC 2 ms 6412 KiB
test_15.txt AC 2 ms 6384 KiB
test_16.txt AC 2 ms 6300 KiB