This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 + 1;
}
}
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] + 1;
}
}
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] - 1];
}
sort(all(a[i]));
}
sort(all(a));
for (int i = 0; i < B; i++) {
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)));
*/
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |