Submission #163994

# Submission time Handle Problem Language Result Execution time Memory
163994 2019-11-16T15:02:08 Z WLZ Unscrambling a Messy Bug (IOI16_messy) C++14
100 / 100
12 ms 636 KB
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;

vector<int> a;
int n;

void solve(int l, int r, set<int> st) {
  if (l == r) {
    a[l] = *st.begin();
    return;
  }
  string s(n, '0');
  for (int i = 0; i < n; i++) {
    if (!st.count(i)) {
      s[i] = '1';
    }
  }
  set<int> tmp_l, tmp_r;
  for (auto& x : st) {
    s[x] = '1';
    if (check_element(s)) {
      tmp_l.insert(x);
    } else {
      tmp_r.insert(x);
    }
    s[x] = '0';
  }
  solve(l, (l + r) / 2, tmp_l);
  solve((l + r) / 2 + 1, r, tmp_r);
}

vector<int> restore_permutation(int _n, int w, int r) {
  n = _n;
  for (int k = 2; k <= n; k += k) {
    for (int i = 0; i + k - 1 < n; i += k) {
      string s(n, '1');
      for (int j = i; j < i + k; j++) {
        s[j] = '0';
      }
      for (int j = i; j < i + k / 2; j++) {
        s[j] = '1';
        add_element(s);
        s[j] = '0';
      }
    }
  }
  compile_set();
  a.assign(n, -1);
  set<int> st;
  for (int i = 0; i < n; i++) {
    st.insert(i);
  }
  solve(0, n - 1, st);  
  vector<int> ans(n);
  for (int i = 0; i < n; i++) {
    ans[a[i]] = i;
  }
  return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB n = 8
2 Correct 3 ms 256 KB n = 8
3 Correct 2 ms 376 KB n = 8
4 Correct 2 ms 256 KB n = 8
5 Correct 2 ms 256 KB n = 8
6 Correct 2 ms 376 KB n = 8
7 Correct 2 ms 380 KB n = 8
8 Correct 2 ms 256 KB n = 8
9 Correct 2 ms 380 KB n = 8
10 Correct 2 ms 376 KB n = 8
11 Correct 2 ms 376 KB n = 8
12 Correct 2 ms 376 KB n = 8
13 Correct 2 ms 252 KB n = 8
14 Correct 2 ms 376 KB n = 8
15 Correct 2 ms 376 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB n = 32
2 Correct 2 ms 376 KB n = 32
3 Correct 3 ms 504 KB n = 32
4 Correct 6 ms 376 KB n = 32
5 Correct 2 ms 376 KB n = 32
6 Correct 2 ms 376 KB n = 32
7 Correct 2 ms 376 KB n = 32
8 Correct 2 ms 376 KB n = 32
9 Correct 10 ms 376 KB n = 32
10 Correct 2 ms 376 KB n = 32
11 Correct 2 ms 380 KB n = 32
12 Correct 2 ms 376 KB n = 32
13 Correct 3 ms 376 KB n = 32
14 Correct 2 ms 376 KB n = 32
15 Correct 2 ms 508 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB n = 32
2 Correct 2 ms 376 KB n = 32
3 Correct 2 ms 376 KB n = 32
4 Correct 2 ms 376 KB n = 32
5 Correct 2 ms 504 KB n = 32
6 Correct 2 ms 376 KB n = 32
7 Correct 2 ms 376 KB n = 32
8 Correct 2 ms 376 KB n = 32
9 Correct 2 ms 376 KB n = 32
10 Correct 2 ms 376 KB n = 32
11 Correct 2 ms 380 KB n = 32
12 Correct 2 ms 376 KB n = 32
13 Correct 3 ms 376 KB n = 32
14 Correct 2 ms 376 KB n = 32
15 Correct 3 ms 504 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 4 ms 504 KB n = 128
2 Correct 4 ms 504 KB n = 128
3 Correct 12 ms 504 KB n = 128
4 Correct 4 ms 504 KB n = 128
5 Correct 5 ms 504 KB n = 128
6 Correct 4 ms 632 KB n = 128
7 Correct 4 ms 504 KB n = 128
8 Correct 4 ms 524 KB n = 128
9 Correct 4 ms 504 KB n = 128
10 Correct 4 ms 636 KB n = 128
11 Correct 4 ms 500 KB n = 128
12 Correct 4 ms 504 KB n = 128
13 Correct 4 ms 504 KB n = 128
14 Correct 4 ms 504 KB n = 128
15 Correct 4 ms 504 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 4 ms 504 KB n = 128
2 Correct 4 ms 632 KB n = 128
3 Correct 4 ms 504 KB n = 128
4 Correct 4 ms 504 KB n = 128
5 Correct 4 ms 504 KB n = 128
6 Correct 4 ms 504 KB n = 128
7 Correct 4 ms 504 KB n = 128
8 Correct 4 ms 504 KB n = 128
9 Correct 4 ms 504 KB n = 128
10 Correct 4 ms 504 KB n = 128
11 Correct 4 ms 504 KB n = 128
12 Correct 4 ms 504 KB n = 128
13 Correct 4 ms 504 KB n = 128
14 Correct 5 ms 504 KB n = 128
15 Correct 4 ms 476 KB n = 128