답안 #20603

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
20603 2017-02-12T15:45:28 Z model_code Unscrambling a Messy Bug (IOI16_messy) C++11
70 / 100
4 ms 512 KB
// 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

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;
         ^~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 8
2 Correct 2 ms 384 KB n = 8
3 Correct 2 ms 384 KB n = 8
4 Correct 2 ms 384 KB n = 8
5 Correct 2 ms 384 KB n = 8
6 Correct 2 ms 384 KB n = 8
7 Correct 2 ms 384 KB n = 8
8 Correct 2 ms 256 KB n = 8
9 Correct 2 ms 384 KB n = 8
10 Correct 2 ms 384 KB n = 8
11 Correct 2 ms 384 KB n = 8
12 Correct 2 ms 384 KB n = 8
13 Correct 2 ms 256 KB n = 8
14 Correct 3 ms 384 KB n = 8
15 Correct 2 ms 384 KB n = 8
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 384 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 384 KB n = 32
5 Correct 2 ms 384 KB n = 32
6 Correct 2 ms 384 KB n = 32
7 Correct 2 ms 384 KB n = 32
8 Correct 2 ms 384 KB n = 32
9 Correct 2 ms 484 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 2 ms 384 KB n = 32
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 384 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 384 KB n = 32
5 Correct 2 ms 256 KB n = 32
6 Correct 2 ms 384 KB n = 32
7 Correct 2 ms 384 KB n = 32
8 Correct 2 ms 384 KB n = 32
9 Correct 2 ms 384 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 2 ms 384 KB n = 32
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 4 ms 512 KB n = 128
3 Correct 4 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 3 ms 512 KB n = 128
6 Correct 4 ms 512 KB n = 128
7 Correct 4 ms 512 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 4 ms 512 KB n = 128
10 Correct 4 ms 512 KB n = 128
11 Correct 4 ms 512 KB n = 128
12 Correct 3 ms 512 KB n = 128
13 Correct 4 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 3 ms 512 KB n = 128
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 512 KB grader returned WA
2 Halted 0 ms 0 KB -