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 "Memory_lib.h"
int concat(int l, int r, int op, int mode) {
return mode + (op << 1) + (r << 8) + (l << 15);
}
int Memory(int N, int M) {
if (N & 1) return -2;
int sq6 = 64;
int sq7 = 128;
int mode = M & 1; M >>= 1;
int op = M & (sq7 - 1); M >>= 7;
int r = M & (sq7 - 1); // i
int l = M >> 7; //j
//printf("%d,%d,%d,%d\n",l,r,op,mode);
if (r == N)
return op ? -2 : -1;
if (l >= N) return -2;
char c = Get(l + 1);
if (l == r) {
++l;
if (c == ']' || c == '>') {
if (--op < 0) return -2;
return concat(l, ++r, op, mode);
}
else {
mode = (c == '[') + 0;
op = 1;
return concat(l, r, op, mode);
}
}
else {
switch (c) {
case '<':case '[':
++op;
break;
case '>':
--op;
if (op < 0) return -2;
if (l > r && op == 0) {
if (mode != 0) return -2;
return concat(0, ++r, op, 0);
}
break;
case ']':
--op;
if (op < 0) return -2;
if (l > r && op == 0) {
if (mode != 1) return -2;
return concat(0, ++r, op, 0);
}
break;
}
++l;
}
//op>50 chk
if (op > (N >> 1)) return -2;
return concat(l, r, op, mode);
}
Compilation message (stderr)
memory.cpp: In function 'int Memory(int, int)':
memory.cpp:10:6: warning: unused variable 'sq6' [-Wunused-variable]
10 | int sq6 = 64;
| ^~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |