Submission #7496041
Source Code Expand
#include <stdio.h> #include <stdlib.h> #define DMAX 36 int compare(const void *a, const void *b); int lower_bound(int lo, int hi, long long val, long long (*cp)[2]); int main(void) { int i, j, p, h, d = DMAX; long long a, b, x, cur, res = 0, ans = 1LL << DMAX, bmatrix[DMAX], baby[(1LL << (DMAX / 2)) + 1][2]; scanf("%lld %lld %lld", &a, &b, &x); while (d > 0 && !((b >> (d - 1)) & 1)) { if (a == x) { printf("%lld\n", res); return 0; } if ((x >> (d - 1)) & 1) { printf("-1\n"); return 0; } if ((a >> (d - 1)) & 1) { a = (a / 2) ^ ((a & 1) * b); res++; } d--; } if (a == x) { printf("%lld\n", res); return 0; } h = 1LL << ((d + 1) / 2); for (i = 0; i < d; i++) { cur = 1LL << i; for (j = 0; j < h; j++) { cur = (cur / 2) ^ ((cur & 1) * b); } bmatrix[i] = cur; } cur = x; for (i = 0; i < h; i++) { cur = (cur / 2) ^ ((cur & 1) * b); baby[i][0] = cur; baby[i][1] = i + 1; } baby[h][0] = baby[h][1] = -1; qsort(baby, h + 1, sizeof(long long) * 2, compare); cur = a; for (i = 0; i < h; i++) { long long lans, lcur = 0; for (j = 0; j < d; j++) { if ((cur >> j) & 1) lcur ^= bmatrix[j]; } p = lower_bound(0, h, lcur + 1, baby) - 1; if (baby[p][0] == lcur) { lans = (long long)h * (i + 1) - baby[p][1]; if (ans > lans) ans = lans; } cur = lcur; } if (ans == (1LL << DMAX)) printf("-1\n"); else printf("%lld\n", res + ans); } int compare(const void *a, const void *b) { long long *ta = *(long long(*)[2])a, *tb = *(long long(*)[2])b; if (ta[0] > tb[0]) return 1; else if (ta[0] < tb[0]) return -1; else if (ta[1] > tb[1]) return 1; else if (ta[1] < tb[1]) return -1; else return 0; } int lower_bound(int lo, int hi, long long val, long long (*cp)[2]){ int mid; while (hi >= lo) { mid = (lo + hi) / 2; if (cp[mid][0] >= val) hi = mid - 1; else lo = mid + 1; } return lo; }
Submission Info
Submission Time | |
---|---|
Task | K - 乱数調整 |
User | Inoel |
Language | C (GCC 5.4.1) |
Score | 300 |
Code Size | 2069 Byte |
Status | AC |
Exec Time | 161 ms |
Memory | 8316 KB |
Compile Error
./Main.c: In function ‘main’: ./Main.c:10:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result] scanf("%lld %lld %lld", &a, &b, &x); ^
Judge Result
Set Name | Subtask | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 30 / 30 | 270 / 270 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Subtask | subtask_00.txt, subtask_01.txt, subtask_02.txt, subtask_03.txt, subtask_04.txt, subtask_05.txt, subtask_06.txt, subtask_07.txt, subtask_08.txt, subtask_09.txt, subtask_10.txt, subtask_11.txt, subtask_12.txt, subtask_13.txt, subtask_14.txt, subtask_15.txt, subtask_16.txt, subtask_17.txt, subtask_18.txt, subtask_19.txt |
All | scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt, scrambled_28.txt, scrambled_29.txt, scrambled_30.txt, scrambled_31.txt, scrambled_32.txt, scrambled_33.txt, scrambled_34.txt, scrambled_35.txt, scrambled_36.txt, scrambled_37.txt, scrambled_38.txt, scrambled_39.txt, scrambled_40.txt, scrambled_41.txt, scrambled_42.txt, subtask_00.txt, subtask_01.txt, subtask_02.txt, subtask_03.txt, subtask_04.txt, subtask_05.txt, subtask_06.txt, subtask_07.txt, subtask_08.txt, subtask_09.txt, subtask_10.txt, subtask_11.txt, subtask_12.txt, subtask_13.txt, subtask_14.txt, subtask_15.txt, subtask_16.txt, subtask_17.txt, subtask_18.txt, subtask_19.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
scrambled_00.txt | AC | 1 ms | 128 KB |
scrambled_01.txt | AC | 1 ms | 128 KB |
scrambled_02.txt | AC | 1 ms | 128 KB |
scrambled_03.txt | AC | 1 ms | 128 KB |
scrambled_04.txt | AC | 1 ms | 128 KB |
scrambled_05.txt | AC | 1 ms | 128 KB |
scrambled_06.txt | AC | 1 ms | 128 KB |
scrambled_07.txt | AC | 1 ms | 252 KB |
scrambled_08.txt | AC | 1 ms | 252 KB |
scrambled_09.txt | AC | 1 ms | 128 KB |
scrambled_10.txt | AC | 1 ms | 252 KB |
scrambled_11.txt | AC | 1 ms | 252 KB |
scrambled_12.txt | AC | 1 ms | 252 KB |
scrambled_13.txt | AC | 1 ms | 128 KB |
scrambled_14.txt | AC | 1 ms | 128 KB |
scrambled_15.txt | AC | 74 ms | 4988 KB |
scrambled_16.txt | AC | 1 ms | 128 KB |
scrambled_17.txt | AC | 1 ms | 128 KB |
scrambled_18.txt | AC | 74 ms | 5884 KB |
scrambled_19.txt | AC | 75 ms | 5884 KB |
scrambled_20.txt | AC | 161 ms | 8316 KB |
scrambled_21.txt | AC | 154 ms | 8316 KB |
scrambled_22.txt | AC | 157 ms | 8316 KB |
scrambled_23.txt | AC | 154 ms | 8316 KB |
scrambled_24.txt | AC | 159 ms | 8316 KB |
scrambled_25.txt | AC | 73 ms | 4860 KB |
scrambled_26.txt | AC | 152 ms | 8316 KB |
scrambled_27.txt | AC | 154 ms | 8316 KB |
scrambled_28.txt | AC | 1 ms | 128 KB |
scrambled_29.txt | AC | 1 ms | 128 KB |
scrambled_30.txt | AC | 1 ms | 128 KB |
scrambled_31.txt | AC | 1 ms | 128 KB |
scrambled_32.txt | AC | 1 ms | 128 KB |
scrambled_33.txt | AC | 1 ms | 128 KB |
scrambled_34.txt | AC | 1 ms | 128 KB |
scrambled_35.txt | AC | 1 ms | 252 KB |
scrambled_36.txt | AC | 1 ms | 252 KB |
scrambled_37.txt | AC | 1 ms | 252 KB |
scrambled_38.txt | AC | 1 ms | 252 KB |
scrambled_39.txt | AC | 158 ms | 8316 KB |
scrambled_40.txt | AC | 158 ms | 8316 KB |
scrambled_41.txt | AC | 159 ms | 8316 KB |
scrambled_42.txt | AC | 157 ms | 8316 KB |
subtask_00.txt | AC | 1 ms | 128 KB |
subtask_01.txt | AC | 1 ms | 128 KB |
subtask_02.txt | AC | 1 ms | 128 KB |
subtask_03.txt | AC | 1 ms | 128 KB |
subtask_04.txt | AC | 1 ms | 128 KB |
subtask_05.txt | AC | 1 ms | 128 KB |
subtask_06.txt | AC | 1 ms | 2176 KB |
subtask_07.txt | AC | 1 ms | 128 KB |
subtask_08.txt | AC | 1 ms | 128 KB |
subtask_09.txt | AC | 1 ms | 128 KB |
subtask_10.txt | AC | 1 ms | 128 KB |
subtask_11.txt | AC | 1 ms | 128 KB |
subtask_12.txt | AC | 1 ms | 128 KB |
subtask_13.txt | AC | 1 ms | 128 KB |
subtask_14.txt | AC | 1 ms | 128 KB |
subtask_15.txt | AC | 1 ms | 128 KB |
subtask_16.txt | AC | 1 ms | 128 KB |
subtask_17.txt | AC | 1 ms | 128 KB |
subtask_18.txt | AC | 1 ms | 128 KB |
subtask_19.txt | AC | 1 ms | 128 KB |