Submission #251394

#TimeUsernameProblemLanguageResultExecution timeMemory
251394cheehengPassword (RMI18_password)C++14
80 / 100
568 ms624 KiB
#include <bits/stdc++.h>
using namespace std;

int query(string q);

typedef pair<int, int> ii;

int p[28] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27};
ii cnt2[28];
int cnt[28];

string guess(int n, int s){
    for(char i = 'a'; i < 'a'+s; i ++){
        string temp = "";
        for(int j = 0; j < n; j ++){
            temp += i;
        }
        cnt[i-'a'] = query(temp);
        cnt2[i-'a'] = ii(cnt[i-'a'], i-'a');
    }

    sort(cnt2, cnt2+s);
    //reverse(cnt2, cnt2+s);
    for(int i = 0; i < s; i ++){
        p[cnt2[i].second] = i;
    }

    //random_shuffle(p, p+s);
    //random_shuffle(p, p+s);

    string temp = "";
    int cntMatch = 0;
    for(int i = 0; i < s; i ++){
        int indx = 0;
        int j = 0;
        while(j < cnt[p[i]]){
            string temp2 = temp;
            if(indx == 0){
                temp2 = (char)('a'+p[i]) + temp;
            }else{
                temp2 = temp2.substr(0, indx) + (char)('a'+p[i]) + temp2.substr(indx);
            }
            //printf("%d: %s %s\n", j, temp.c_str(), temp2.c_str());
            int res = query(temp2);
            if(res > cntMatch){
                temp = temp2;
                cntMatch = res;
                j ++;
            }
            indx ++;
        }
    }

    return temp;
}
#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...