#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
static const ll K = 626237348924392349LL;
static int radi[1005];
static int ord[] = {129, 130, 126, 98, 96, 136, 122, 82, 86, 102, 18, 124, 32, 40, 71, 51, 91, 108, 94, 17, 113, 47, 64, 66, 65, 7, 131, 76, 138, 99, 77, 81, 54, 35, 56, 39, 25, 3, 87, 101, 61, 68, 14, 112, 24, 107, 97, 19, 104, 59, 75, 33, 21, 145, 78, 15, 120, 140, 36, 44, 83, 38, 46, 103, 84, 95, 57, 22, 37, 23, 70, 149, 31, 148, 121, 110, 11, 2, 100, 42, 30, 52, 72, 53, 67, 29, 132, 139, 144, 146, 45, 26, 93, 147, 135, 80, 116, 114, 49, 4, 88, 16, 90, 127, 20, 143, 85, 55, 41, 123, 92, 10, 13, 105, 63, 58, 0, 60, 109, 34, 50, 141, 115, 117, 134, 28, 9, 118, 48, 1, 12, 6, 142, 119, 62, 128, 27, 133, 5, 43, 137, 73, 106, 8, 74, 125, 69, 111, 79, 89};
void Anna(int _n, long long X, int _k, int P[] ){
int n = _n;
int k = _k;
for(int i=0; i<n; i++) radi[i] = 1;
for(int i=0; i<k; i++) radi[P[i]] = 0;
if(k > 40){
for(int i=0; i<n; i++) Set(i, 1);
return;
}
X ^= K;
int j = 0;
for(int i=0; i<38; i++){
int treba = X%3;
X /= 3;
treba++;
for(;;){
if(treba/2 <= radi[ord[j]] && treba%2 <= radi[ord[j+1]]){
Set(ord[j], treba/2);
Set(ord[j+1], treba%2);
j += 2;
break;
}
Set(ord[j], 0);
Set(ord[j+1], 0);
j += 2;
}
}
while(j < n){
Set(ord[j], 0);
j++;
}
}
/*
1
150 1322662236236 40
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78
*/
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
static const ll K = 626237348924392349LL;
static int ord[] = {129, 130, 126, 98, 96, 136, 122, 82, 86, 102, 18, 124, 32, 40, 71, 51, 91, 108, 94, 17, 113, 47, 64, 66, 65, 7, 131, 76, 138, 99, 77, 81, 54, 35, 56, 39, 25, 3, 87, 101, 61, 68, 14, 112, 24, 107, 97, 19, 104, 59, 75, 33, 21, 145, 78, 15, 120, 140, 36, 44, 83, 38, 46, 103, 84, 95, 57, 22, 37, 23, 70, 149, 31, 148, 121, 110, 11, 2, 100, 42, 30, 52, 72, 53, 67, 29, 132, 139, 144, 146, 45, 26, 93, 147, 135, 80, 116, 114, 49, 4, 88, 16, 90, 127, 20, 143, 85, 55, 41, 123, 92, 10, 13, 105, 63, 58, 0, 60, 109, 34, 50, 141, 115, 117, 134, 28, 9, 118, 48, 1, 12, 6, 142, 119, 62, 128, 27, 133, 5, 43, 137, 73, 106, 8, 74, 125, 69, 111, 79, 89};
long long Bruno( int N, int A[] ){
int j = 0;
ll p3 = 1;
ll res = 0;
for(int i=0; i<38; i++){
int tr;
for(;;){
tr = 2*A[ord[j]] + A[ord[j+1]];
j += 2;
if(tr) break;
}
res += (tr-1)*p3;
p3 *= 3;
}
return res ^ K;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
45 ms |
2204 KB |
Output is correct - L* = 40 |
2 |
Correct |
38 ms |
2196 KB |
Output is correct - L* = 40 |
3 |
Correct |
37 ms |
2332 KB |
Output is correct - L* = 40 |
4 |
Correct |
44 ms |
2424 KB |
Output is correct - L* = 40 |
5 |
Correct |
39 ms |
2316 KB |
Output is correct - L* = 40 |
6 |
Correct |
38 ms |
2296 KB |
Output is correct - L* = 40 |
7 |
Correct |
37 ms |
2252 KB |
Output is correct - L* = 40 |
8 |
Correct |
38 ms |
2348 KB |
Output is correct - L* = 40 |
9 |
Correct |
38 ms |
2196 KB |
Output is correct - L* = 40 |
10 |
Correct |
44 ms |
2348 KB |
Output is correct - L* = 40 |
11 |
Correct |
44 ms |
2276 KB |
Output is correct - L* = 40 |
12 |
Correct |
37 ms |
2228 KB |
Output is correct - L* = 40 |
13 |
Correct |
37 ms |
2336 KB |
Output is correct - L* = 40 |
14 |
Correct |
39 ms |
2224 KB |
Output is correct - L* = 40 |
15 |
Correct |
44 ms |
2264 KB |
Output is correct - L* = 40 |
16 |
Correct |
39 ms |
2168 KB |
Output is correct - L* = 40 |
17 |
Correct |
38 ms |
2312 KB |
Output is correct - L* = 40 |
18 |
Correct |
37 ms |
2276 KB |
Output is correct - L* = 40 |
19 |
Correct |
37 ms |
2268 KB |
Output is correct - L* = 40 |
20 |
Correct |
39 ms |
2204 KB |
Output is correct - L* = 40 |
21 |
Correct |
40 ms |
2304 KB |
Output is correct - L* = 40 |
22 |
Correct |
37 ms |
2328 KB |
Output is correct - L* = 40 |
23 |
Correct |
39 ms |
2332 KB |
Output is correct - L* = 40 |
24 |
Correct |
38 ms |
2212 KB |
Output is correct - L* = 40 |
25 |
Correct |
39 ms |
2336 KB |
Output is correct - L* = 40 |
26 |
Correct |
37 ms |
2228 KB |
Output is correct - L* = 40 |
27 |
Correct |
37 ms |
2320 KB |
Output is correct - L* = 40 |
28 |
Correct |
38 ms |
2168 KB |
Output is correct - L* = 40 |
29 |
Correct |
43 ms |
2228 KB |
Output is correct - L* = 40 |
30 |
Correct |
38 ms |
2316 KB |
Output is correct - L* = 40 |
31 |
Correct |
38 ms |
2336 KB |
Output is correct - L* = 40 |
32 |
Correct |
39 ms |
2332 KB |
Output is correct - L* = 40 |
33 |
Correct |
38 ms |
2252 KB |
Output is correct - L* = 40 |
34 |
Correct |
39 ms |
2276 KB |
Output is correct - L* = 40 |
35 |
Correct |
37 ms |
2432 KB |
Output is correct - L* = 40 |
36 |
Correct |
40 ms |
2392 KB |
Output is correct - L* = 40 |
37 |
Correct |
48 ms |
2268 KB |
Output is correct - L* = 40 |
38 |
Correct |
50 ms |
2284 KB |
Output is correct - L* = 40 |
39 |
Correct |
38 ms |
2204 KB |
Output is correct - L* = 40 |
40 |
Correct |
40 ms |
2284 KB |
Output is correct - L* = 40 |