답안 #642655

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
642655 2022-09-20T10:15:03 Z SlavicG Password (RMI18_password) C++17
30 / 100
661 ms 440 KB
#include "bits/stdc++.h"
using namespace std;
int query(string str);

#define sz(a) (int)a.size()

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
string guess(int n, int s) {
    vector<pair<int, char>> v;
    for(int f = 0; f < s; ++f) {
        char c = char('a' + f);
        string paiu = string(n, c);
        int x = query(paiu);
        if(x > 0) {
            v.push_back({x, c});
        }
    }
    assert(v.size() > 0);
    sort(v.rbegin(), v.rend());
    string ans = string(v[0].first, v[0].second);
    v.erase(v.begin());

    assert(sz(ans) > 0);
    if(!sz(v)) return ans;


    for(auto noo: v) {
        char c = noo.second;
        int cnt = noo.first;
        string ff = ans;
        string bruh = "";
        for(int i = 0; i <= sz(ff); ++i) {
            int lol = 0, l = 1, r = cnt;
            string rem = bruh;
            while(l <= r) {
                int mid = l + r >> 1;
                bruh = rem;
                for(int j = 0; j < mid; ++j) bruh += c;
                for(int k = i; k < sz(ff); ++k) {
                    bruh += ff[k];
                }

                if(query(bruh) == sz(bruh)) {
                    lol = mid;
                    l = mid + 1;
                } else r = mid - 1;
            }
            cnt -= lol;
            bruh = rem;
            for(int j = 0; j < lol; ++j) bruh += c;
            if(i < sz(ff)) bruh += ff[i];
        }
        ans = bruh;
    }
    return ans;
}

Compilation message

password.cpp: In function 'std::string guess(int, int)':
password.cpp:36:29: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   36 |                 int mid = l + r >> 1;
      |                           ~~^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Guessed the password with 87 queries.
2 Correct 2 ms 208 KB Guessed the password with 156 queries.
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Guessed the password with 109 queries.
2 Correct 2 ms 208 KB Guessed the password with 229 queries.
3 Correct 4 ms 208 KB Guessed the password with 331 queries.
4 Correct 6 ms 208 KB Guessed the password with 494 queries.
# 결과 실행 시간 메모리 Grader output
1 Correct 291 ms 324 KB Guessed the password with 21562 queries.
2 Correct 497 ms 440 KB Guessed the password with 41524 queries.
3 Incorrect 661 ms 324 KB Could not guess the password with 50000 queries.
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Guessed the password with 87 queries.
2 Correct 2 ms 208 KB Guessed the password with 156 queries.
3 Correct 1 ms 208 KB Guessed the password with 109 queries.
4 Correct 2 ms 208 KB Guessed the password with 229 queries.
5 Correct 4 ms 208 KB Guessed the password with 331 queries.
6 Correct 6 ms 208 KB Guessed the password with 494 queries.
7 Correct 291 ms 324 KB Guessed the password with 21562 queries.
8 Correct 497 ms 440 KB Guessed the password with 41524 queries.
9 Incorrect 661 ms 324 KB Could not guess the password with 50000 queries.
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Guessed the password with 87 queries.
2 Correct 2 ms 208 KB Guessed the password with 156 queries.
3 Correct 1 ms 208 KB Guessed the password with 109 queries.
4 Correct 2 ms 208 KB Guessed the password with 229 queries.
5 Correct 4 ms 208 KB Guessed the password with 331 queries.
6 Correct 6 ms 208 KB Guessed the password with 494 queries.
7 Correct 291 ms 324 KB Guessed the password with 21562 queries.
8 Correct 497 ms 440 KB Guessed the password with 41524 queries.
9 Incorrect 661 ms 324 KB Could not guess the password with 50000 queries.
10 Halted 0 ms 0 KB -