# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
95747 | popovicirobert | Question (Grader is different from the original contest) (CEOI14_question_grader) | C++14 | 2214 ms | 84120 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.
int fr[13];
int fact[13];
inline void get(int x, int sign) {
int i;
fact[0] = 1;
for(i = 1; i <= 12; i++) {
fact[i] = fact[i - 1] * i;
}
int last = 0;
int sum = 0;
for(i = 1; i <= 6; i++) {
int cur = fact[12 - last - 1] / (fact[6 - i] * fact[6 + i - last - 1]);
for(int j = last + 1; j <= 12; j++) {
if(sum + cur >= x) {
fr[j] += sign;
last = j;
break;
}
else {
sum += cur;
cur = cur * (6 + i - j) / (12 - j);
}
}
}
}
int encode (int N, int x, int y) {
for(int i = 1; i <= 12; i++) {
fr[i] = 0;
}
get(x, 1);
get(y, -1);
for(int i = 1; i <= 12; i++) {
if(fr[i] > 0) {
return i;
}
}
}
int fr[13];
int fact[13];
inline void get(int x, int sign) {
int i;
fact[0] = 1;
for(i = 1; i <= 12; i++) {
fact[i] = fact[i - 1] * i;
}
int last = 0;
int sum = 0;
for(i = 1; i <= 6; i++) {
int cur = fact[12 - last - 1] / (fact[6 - i] * fact[6 + i - last - 1]);
for(int j = last + 1; j <= 12; j++) {
if(sum + cur >= x) {
fr[j] += sign;
last = j;
break;
}
else {
sum += cur;
cur = cur * (6 + i - j) / (12 - j);
}
}
}
}
int decode (int N, int q, int h) {
for(int i = 1; i <= 12; i++) {
fr[i] = 0;
}
get(q, 1);
return fr[h] > 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |