# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
100971 | square1001 | Question (Grader is different from the original contest) (CEOI14_question_grader) | C++14 | 1885 ms | 78888 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 <string>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
static bool first_encode = true;
int size_encode = 0;
vector<vector<int> > perm_encode;
int encode(int n, int x, int y) {
if (first_encode) {
function<int(int, int)> comb = [&](int n, int m) {
int ans = 1;
for (int i = 1; i <= m; ++i) {
ans = (long long)(ans) * (n - m + i) / i;
}
return ans;
};
while (comb(size_encode * 2, size_encode) <= n) ++size_encode;
string perm = string(size_encode, 'o') + string(size_encode, 'x');
do {
vector<int> v;
for (int i = 0; i < size_encode * 2; ++i) {
if (perm[i] == 'o') v.push_back(i);
}
perm_encode.push_back(v);
} while (next_permutation(perm.begin(), perm.end()));
first_encode = false;
}
vector<int> a = perm_encode[x];
vector<int> b = perm_encode[y];
for (int i : a) {
if (find(b.begin(), b.end(), i) == b.end()) {
return i + 1;
}
}
return -1;
}
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
static bool first_decode = true;
vector<vector<int> > perm_decode;
int size_decode = 0;
int decode(int n, int q, int h) {
if (first_decode) {
function<int(int, int)> comb = [&](int n, int m) {
int ans = 1;
for (int i = 1; i <= m; ++i) {
ans = (long long)(ans) * (n - m + i) / i;
}
return ans;
};
while (comb(size_decode * 2, size_decode) <= n) ++size_decode;
string perm = string(size_decode, 'o') + string(size_decode, 'x');
do {
vector<int> v;
for (int i = 0; i < size_decode * 2; ++i) {
if (perm[i] == 'o') v.push_back(i);
}
perm_decode.push_back(v);
} while (next_permutation(perm.begin(), perm.end()));
first_decode = false;
}
vector<int> a = perm_decode[q];
if (find(a.begin(), a.end(), h - 1) != a.end()) return 1;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |