Submission #1159688

#TimeUsernameProblemLanguageResultExecution timeMemory
1159688fryingducPassword (RMI18_password)C++17
0 / 100
29 ms464 KiB
#include <string>
#include <queue>

using namespace std;

int query(string q);

string guess(int n, int c) {
  priority_queue<pair<int, string>> pq;
  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...