Submission #20603

#TimeUsernameProblemLanguageResultExecution timeMemory
20603model_codeUnscrambling a Messy Bug (IOI16_messy)C++11
70 / 100
4 ms512 KiB
// name = messy_tourist_subtask1234.cpp, type = cpp.g++11

#include "messy.h"
// w = n log n
// r = 2 n log n



#include <bits/stdc++.h>

//#include "messy.h"

using namespace std;

int nn;

void put(int a = nn, int b = nn, int c = nn) {
  string s(nn + 1, '0');
  s[a] = s[b] = s[c] = '1';
  add_element(s.substr(0, nn));
}

bool get(int a = nn, int b = nn, int c = nn) {
  string s(nn + 1, '0');
  s[a] = s[b] = s[c] = '1';
  return check_element(s.substr(0, nn));
}

vector<int> restore_permutation(int n, int w, int r) {
  nn = n;
  int k = 0;
  while ((1 << k) != n) {
    k++;
  }
  put(0, 0);
  for (int i = 0; i < k - 1; i++) {
    put(i, i + 1);
  }
  for (int i = k; i < n; i++) {
    for (int j = 0; j < k; j++) {
      if (i & (1 << j)) {
        put(i, j, (j + 1) % k);
      }
    }
  }
  compile_set();
  vector <int> ans(n, -1);
  vector <int> imp(k);
  for (int i = 0; i < n; i++) {
    if (get(i)) {
      ans[i] = 0;
      imp[0] = i;
    }
  }
  for (int j = 1; j < k; j++) {
    int new_last = -1;
    for (int i = 0; i < n; i++) {
      if (ans[i] == -1 && get(i, imp[j - 1])) {
        ans[i] = j;
        imp[j] = i;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    if (ans[i] == -1) {
      int u = 0;
      for (int j = 0; j < k; j++) {
        if (get(i, imp[j], imp[(j + 1) % k])) {
          u += (1 << j);
        }
      }
      ans[i] = u;
    }
  }
  return ans;
}

Compilation message (stderr)

messy.cpp: In function 'std::vector<int> restore_permutation(int, int, int)':
messy.cpp:56:9: warning: unused variable 'new_last' [-Wunused-variable]
     int new_last = -1;
         ^~~~~~~~
#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...