Submission #1172020

#TimeUsernameProblemLanguageResultExecution timeMemory
1172020fryingducMachine (IOI24_machine)C++20
100 / 100
42 ms448 KiB
#include "machine.h"

#include "bits/stdc++.h"

using namespace std;

#ifdef duc_debug
#include "bits/debug.h"
#else
#define debug(...)
#endif

vector<int> find_permutation(int N) {
  int n = N;
  if (n & 1) {
    vector<int> a(n);
    iota(a.begin(), a.end(), 0);
    vector<int> b = use_machine(a);
    int x = 0;
    for (int i = 0; i < n; ++i) {
      bool flag = 0;
      for (int j = 0; j < n; ++j) {
        if (i == j) continue;
        if ((b[i] ^ b[j]) == 1) {
          flag = 1;
          break;
        }
      }
      if (!flag) {
        x = b[i] ^ (n - 1);
        break;
      }
    }
    vector<int> rev(n);
    for (int i = 0; i < n; ++i) {
      b[i] ^= x;
    }
    return b;
  } else {
    vector<int> a(n);
    iota(a.begin(), a.end(), 1);
    a[n - 1] = n + 2;
    vector<int> b = use_machine(a);
    for (int x = 0; x < 256; ++x) {
      vector<int> c = b;
      for (auto &i : c) i ^= x;
      sort(c.begin(), c.end());
      if (c == a) {
        for (auto &i : b) {
          i ^= x;
          if (i == n + 2) i = n;
          --i;
        }
        return b;
      }  
    }
  }
}

Compilation message (stderr)

machine.cpp: In function 'std::vector<int> find_permutation(int)':
machine.cpp:58:1: warning: control reaches end of non-void function [-Wreturn-type]
   58 | }
      | ^
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...