제출 #1219275

#제출 시각아이디문제언어결과실행 시간메모리
1219275kunzaZa183Unscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms584 KiB
#include <bits/stdc++.h>
#include <cassert>

#include "messy.h"

using namespace std;

vector<int> restore_permutation(int n, int w, int r) {

  for (int len = n; len >= 2; len /= 2) {
    for (int j = 0; j < n; j += len) {

      string vi(n, '1');
      for (int k = j; k < j + len; k++)
        vi[k] = '0';

      for (int k = j; k < j + len / 2; k++) {
        vi[k] = '1';
        // cout << vi << "\n";
        add_element(vi);
        vi[k] = '0';
      }
    }
  }

  compile_set();

  vector<int> vl(n, 0), vr(n, n - 1);

  for (int len = n; len >= 2; len /= 2) {
    map<pair<int, int>, vector<int>> mpiivi;

    for (int i = 0; i < n; i++)
      mpiivi[{vl[i], vr[i]}].push_back(i);

    string ask(n, '1');

    for (auto [pii, vi] : mpiivi) {
      for (auto a : vi)
        ask[a] = '0';

      for (auto a : vi) {
        ask[a] = '1';
        // cout << ask << "\n";
        if (check_element(ask)) {
          vr[a] = (vl[a] + vr[a]) / 2;
        } else {
          vl[a] = (vl[a] + vr[a]) / 2 + 1;
        }
        ask[a] = '0';
      }

      for (auto a : vi)
        ask[a] = '1';
    }

    // for (int i = 0; i < n; i++)
    //  cout << vl[i] << " " << vr[i] << "\n";
  }

  assert(vl == vr);

  return vl;
}

컴파일 시 표준 에러 (stderr) 메시지

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...