Submission #1089614

#TimeUsernameProblemLanguageResultExecution timeMemory
1089614TymondUnscrambling a Messy Bug (IOI16_messy)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;
using ll = long long;
using ld = long double;
#define fi first
#define se second
#define vi vector<int>
#define vll vector<long long>
#define pii pair<int, int>
#define pll pair<long long, long long>
#define pb push_back
#define mp make_pair
#define eb emplace_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x).size()
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
mt19937_64 rng64(chrono::steady_clock::now().time_since_epoch().count());
inline int rand(int l,int r){return uniform_int_distribution<int>(l, r)(rng);}
inline ll rand(ll l,ll r){return uniform_int_distribution<ll>(l, r)(rng64);}
#ifdef DEBUG
auto&operator<<(auto&o,pair<auto,auto>p){return o<<"("<<p.first<<", "<<p.second<<")";}
auto operator<<(auto&o,auto x)->decltype(x.end(),o){o<<"{";int i=0;for(auto e:x)o<<","+!i++<<e;return o<<"}";}
#define debug(X...)cerr<<"["#X"]: ",[](auto...$){((cerr<<$<<"; "),...)<<endl;}(X)
#else
#define debug(...){}
#endif
 
struct custom_hash {
    static uint64_t splitmix64(uint64_t x) {
        x += 0x9e3779b97f4a7c15;
        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
        return x ^ (x >> 31);
    }
 
    size_t operator()(uint64_t x) const {
        static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
        return splitmix64(x + FIXED_RANDOM);
    }
};

vi p;
int n;
string ones, zeros;

void add(int l, int p){
    if(l + 1 >= p){
        return;
    }
    
    int mid = (l + p) / 2;
    string s = ones;
    for(int i = l; i < p; i++){
        s[i] = '0';
    }
    for(int i = l; i < m; i++){
        s[i] = '1';
        add_element(s);
        s[i] = '0';
    }

    add(l, m);
    add(m, p);
}

void get(int l, int p, string x){
    int mid = (l + p) / 2;
    if(l + 1 == p){
        for(int i = 0; i < n; i++){
            if(x[i] == '0'){
                p[i] = l;
                return;
            }
        }
        return;
    }

    string p = x;
    string d = ones;
    for(int i = 0; i < n; i++){
        if(x[i] == '0'){
            x[i] = '1';
            if(check_element(x)){
                p[i] = '1';
                d[i] = '0';
            }

            x[i] = '0';
        }
    }
    get(l, m, d);
    get(m, p, p);
}
 
vi restore_permutation(int N, int w, int r){
    n = N;
    p.resize(n);
    zeros = "";
    ones = "";
    for(int i = 0; i < n; i++){
        ones += "1";
        zeros += "0";
    }

    add(0, n);
    compile_set();
    get(0, n, zeros);
 
    return p;
}

Compilation message (stderr)

messy.cpp: In function 'void add(int, int)':
messy.cpp:57:24: error: 'm' was not declared in this scope
   57 |     for(int i = l; i < m; i++){
      |                        ^
messy.cpp:63:12: error: 'm' was not declared in this scope
   63 |     add(l, m);
      |            ^
messy.cpp:52:9: warning: unused variable 'mid' [-Wunused-variable]
   52 |     int mid = (l + p) / 2;
      |         ^~~
messy.cpp: In function 'void get(int, int, std::string)':
messy.cpp:72:18: error: invalid types 'int[int]' for array subscript
   72 |                 p[i] = l;
      |                  ^
messy.cpp:79:12: error: declaration of 'std::string p' shadows a parameter
   79 |     string p = x;
      |            ^
messy.cpp:67:21: note: 'int p' previously declared here
   67 | void get(int l, int p, string x){
      |                 ~~~~^
messy.cpp:92:12: error: 'm' was not declared in this scope
   92 |     get(l, m, d);
      |            ^
messy.cpp:68:9: warning: unused variable 'mid' [-Wunused-variable]
   68 |     int mid = (l + p) / 2;
      |         ^~~