답안 #1035654

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1035654 2024-07-26T13:00:03 Z vjudge1 Shuffle (NOI19_shuffle) C++17
컴파일 오류
0 ms 0 KB
#include "shuffle.h"
#include <bits/stdc++.h>
using namespace std;

#define all(x) x.begin(), x.end()

const int N = 6;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

vector<int> s, ans;

vector<int> solve(int N, int B, int K, int Q, int ST) {
  ans.resize(N);

  s.resize(N);
  for (int i = 0; i < N; i++) {
    s[i] = i;
  }

	vector<vector<int>> a(B, vector<int>(K));
  for (int i = 0; i < B; i++) {
    for (int j = 0; j < K; j++) {
      a[i][j] = i*K + j;
    }
  }

  vector<vector<int>> b = shuffle(a);
  
  while (1) {
    shuffle(all(b), rng);
    for (int i = 0; i < B; i++) {
      shuffle(all(b[i]), rng);
      for (int j = 0; j < K; j++) {
        ans[i*K + j] = b[i][j];
      }
    }

    // check
    bool ok = 1;
    for (int dalekofrivialovesesomer = 0; dalekofrivialovesesomer <= 3; dalekofrivialovesesomer++) {
      shuffle(all(s), rng);
      for (int i = 0; i < B; i++) {
        for (int j = 0; j < K; j++) {
          a[i][j] = s[i*K + j];
        }
      }

      vector<vector<int>> c = shuffle(a);

      for (int i = 0; i < B; i++) {
        for (int j = 0; j < B; j++) {
          a[i][j] = ans[a[i][j]];
          sort(all(a[i]));
        }
      }
      sort(all(a));

      for (int j = 0; j < B; j++) {
        sort(all(c[i]));
      }
      sort(all(c));
  
      if (a != c) {
        ok = 0;
        break;
      }
    }
    if (!ok) continue;

    return ans;
  }

  return ans;
  /*
  sort(all(b));
  do {
    
  }
  while (next_permutation(all(b)));
  */
}

Compilation message

shuffle.cpp: In function 'std::vector<int> solve(int, int, int, int, int)':
shuffle.cpp:60:20: error: 'i' was not declared in this scope
   60 |         sort(all(c[i]));
      |                    ^
shuffle.cpp:5:16: note: in definition of macro 'all'
    5 | #define all(x) x.begin(), x.end()
      |                ^