# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1035652 | vjudge1 | Shuffle (NOI19_shuffle) | C++17 | 0 ms | 0 KiB |
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;
}
}
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 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)));
*/
}