| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1118494 | somefolk | Password (RMI18_password) | C++17 | 0 ms | 0 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
int query(string s);
string guess(int n, int s){
    string sol = "", temp = "";
    for(char i = 'a'; i < 'a'+s; i++){
        string letter = string(n, i);
        int amount = query(letter);
        int initAmount = amount;
        if(amount == 0) continue;
        if(i == 'a'){
            temp += string(amount, i);
        } else {
            int len = temp.length();
            vector<pair<int, int>> add;
            for(int j = 0; j <= len; j++){
                string curr = temp.substr(0, len-j) + string(n-(len-j), i);
                amount = query(curr);
                int pos = len - j;
                int diff = amount - pos;
                if(diff > 0){
                    add.push_back({pos, diff});
                    initAmount -= diff;
                    if(initAmount <= 0) break;
                }
            }
            int k = 0;
            for(auto &j : add){
                temp.insert(j.first + k, string(j.second, i));
                k+=j.second;
                // cout << "{" << j.first << " " << j.second << "}" << endl;
            }
            // cout << "| " << temp << " |" << endl;
        }
    }
    return temp;
}
