Submission #1159686

#TimeUsernameProblemLanguageResultExecution timeMemory
1159686fryingducPassword (RMI18_password)C++20
0 / 100
29 ms464 KiB
#include "bits/stdc++.h"

using namespace std;

#ifdef duc_debug
#include "bits/debug.h"
#else
#define debug(...)
#endif

int query(string s);

string guess(int _N, int _C) {
  priority_queue<pair<int, string>> pq;
  int n = _N, c = _C;
  for (int i = 0; i < c; ++i) {
    string cur;
    for (int j = 0; j < n; ++j) {
      cur += char('a' + i);
    }
    int x = query(cur);
    if (x > 0) {
      cur.clear();
      for (int j = 0; j < x; ++j) {
        cur += char('a' + i);
      }
      pq.push(make_pair(x, cur));
    }
  }
  while ((int)pq.size() > 1) {
    string x = pq.top().second;
    pq.pop();
    string y = pq.top().second;
    pq.pop();
    string res;
    int px = 0, py = 0;
    while (px < (int)x.size() and py < (int)y.size()) {
      string g = res + x[px];
      for (int i = py; i < (int)y.size(); ++i) {
        g += y[i];
      }
      int cur_g = query(g);
      if (cur_g > (int)res.size() + (int)y.size() - py) {
        res += x[px++];
      } else {
        res += y[py++];
      }
    }
    while (px < (int)x.size()) {
      res += x[px++];
    }
    while (py < (int)y.size()) {
      res += y[py++];
    }
    pq.push(make_pair((int)res.size(), res));
  }
  return pq.top().second;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...