Submission #1093587

#TimeUsernameProblemLanguageResultExecution timeMemory
1093587huyngoUnscrambling a Messy Bug (IOI16_messy)C++17
49 / 100
1 ms436 KiB
#include<bits/stdc++.h>
using namespace std;
#include "messy.h"

// void add_element(std::string x);
// bool check_element(std::string x);
// void compile_set();

std::vector<int> restore_permutation(int n, int w, int r) {
    vector<int> perm(n);
    string s(n, '0');
    for (int i = 0; i < n; ++i) {
        s[i] = '1';
        add_element(s);
    }
    compile_set();
    s = string(n, '0');
    vector<int> pos(n, 0);
    iota(pos.begin(), pos.end(), 0);
    mt19937 rd(2004);
    for (int n_bit1 = 1; n_bit1 <= n; ++n_bit1) {
        shuffle(pos.begin(), pos.end(), rd);
        int found = 0;
        for (int i = 0; i < pos.size() - 1; ++i) {
            s[pos[i]] = '1';
            if (check_element(s)) {
                perm[pos[i]] = n_bit1 - 1;
                pos.erase(pos.begin() + i);
                found = 1;
                break;
            }
            else
                s[pos[i]] = '0';
        }
        if (!found) {
            s[pos.back()] = '1';
            perm[pos.back()] = n_bit1 - 1;
            pos.pop_back();
        }
    }
    return perm;
}

Compilation message (stderr)

messy.cpp: In function 'std::vector<int> restore_permutation(int, int, int)':
messy.cpp:24:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |         for (int i = 0; i < pos.size() - 1; ++i) {
      |                         ~~^~~~~~~~~~~~~~~~
#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...