답안 #56885

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
56885 2018-07-13T05:12:59 Z 강태규(#1633) 기억 압축 (JOI15_memory) C++11
0 / 100
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 -