# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
56885 |
2018-07-13T05:12:59 Z |
강태규(#1633) |
기억 압축 (JOI15_memory) |
C++11 |
|
3 ms |
488 KB |
#include "Memory_lib.h"
int Memory(int N, int M) {
if (N <= 30) {
int i = M >> 16;
M &= ((1 << 16) - 1);
if (i == N) {
if (M != 1) return -2;
return -1;
}
int sz = 15;
while (sz > 0 && (M >> sz) == 0) --sz;
M &= ((1 << sz) - 1);
char ret = Get(i + 1);
switch (ret) {
case '<':
if (sz == 15) return -2;
return ((i + 1) << 16) | (2 << sz) | M;
break;
case '>':
if (sz == 0 || (M >> (sz - 1))) return -2;
return ((i + 1) << 16) | (1 << (sz - 1)) | M;
break;
case '[':
if (sz == 15) return -2;
return ((i + 1) << 16) | (3 << sz) | M;
break;
case ']':
if (sz > 0 && (M >> (sz - 1)))
return ((i + 1) << 16) | (1 << (sz - 1)) | M;
return -2;
break;
}
}
int i = M >> 16;
int x = M & ((1 << 16) - 1);
if (i == N) {
if (x != 0) return -2;
return -1;
}
if (Get(i + 1) != '<') {
if (--x < 0) return -2;
}
else {
++x;
}
return ((i + 1) << 16) | x;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
248 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
248 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
248 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
248 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
3 ms |
488 KB |
Wrong Answer [1] |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
248 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |