Submission #18036

# Submission time Handle Problem Language Result Execution time Memory
18036 2016-01-18T13:41:10 Z gs13068 여왕벌 (KOI15_queen) C
0 / 100
5000 ms 54668 KB
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
    int M = 0; // 격자칸의 한 변의 길이
    int days = 0;
    int i = 0, j = 0, k = 0;
    int** arr = NULL; // 둥지
    char** rule = NULL; // 규칙
    short **input = NULL; // 겉 애벌레의 성장 값(패킹)
    char* inputUnpack = NULL; // 겉 애벌레의 성장 값(언패킹)
    char* last = NULL; // 임시 변수
    int a = 0, b = 0, c = 0; // 임시 변수
    char temp = 0, temp2 = 0; // 임시 변수
    char t; // 임시 변수
 
    scanf("%d", &M);
    arr = (int**)malloc(sizeof(int*) * M);
    for (i = 0; i < M; i++) {
        arr[i] = (int*)malloc(sizeof(int) * M);
        for (j = 0; j < M; j++)
            arr[i][j] = 1;
    } // 격자 생성 및 초기화
    last = (char*)malloc(sizeof(char) * (M - 1)); // 임시 변수 생성
 
    scanf("%d", &days); // 날짜 입력
 
    rule = (char**)malloc(sizeof(char*) * (M - 1) * (M - 1));
    for (i = 0; i < (M - 1) * (M - 1); i++) {
        rule[i] = (char*)malloc(sizeof(char) * 27 + 1);
        scanf("%s", rule[i]); // 속 애벌레 성장 규칙을 저장하는 배열 생성 및 입력
    }
 
    input = (short**)malloc(sizeof(short*) * days);
    for (i = 0; i < days; i++) {
        input[i] = (short*)malloc(sizeof(short) * 3);
    }
 
    for (i = 0; i < days; i++) {
        scanf("%hd %hd %hd", &input[i][0], &input[i][1], &input[i][2]);
    } // 겉 애벌레 성장 값 입력(pack)
 
    for (i = 0; i < days; i++) {
        inputUnpack = (char*)malloc(sizeof(char) * (2 * M - 1)); // 겉 애벌레의 성장 값을 저장하는 배열 생성(unpack)
        j = 0;
        for (k = 0; k < input[i][0]; k++)
            inputUnpack[j + k] = 0;
        j += input[i][0];
        for (k = 0; k < input[i][1]; k++)
            inputUnpack[j + k] = 1;
        j += input[i][1];
        for (k = 0; k < input[i][2]; k++)
            inputUnpack[j + k] = 2;
        for (j = 0; j < M; j++)
            arr[M - 1 - j][0] += inputUnpack[j]; // 왼쪽 겉
        for (k = 1; k < M; k++)
            arr[0][k] += inputUnpack[j - 1 + k]; // 위쪽 겉
 
        for (j = 1; j < M; j++) {
            for (k = 1; k < M; k++) {
                if (k == 1) {
                    a = inputUnpack[M - 1 - j];
                    b = inputUnpack[M - j];
                    if (j == 1)
                        c = inputUnpack[M - 1 + k];
                    else
                        c = last[k - 1];
                }
                else if (j == 1) {
                    a = temp2;
                    b = inputUnpack[M - 2 + k];
                    c = inputUnpack[M - 1 + k];
                }
                else {
                    a = temp2;
                    b = last[k - 2];
                    c = last[k - 1];
                }
 
                t = rule[(j - 1) * 3 + (k - 1)][a * 9 + b * 3 + c];
                if (t == 'L') {
                    arr[j][k] += a;
                    temp = a;
                }
                else if (t == 'D') {
                    arr[j][k] += b;
                    temp = b;
                }
                else {
                    arr[j][k] += c;
                    temp = c;
                }
 
                if (k != 1)
                    last[k - 2] = temp2;
                temp2 = temp;
            }
 
            last[k - 2] = temp2;
        }
 
        free(inputUnpack);
    }
 
    for (i = 0; i < M; i++) {
        for (j = 0; j < M; j++)
            printf("%d ", arr[i][j]);
        printf("\n");
    }
 
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1084 KB Output is correct
2 Incorrect 0 ms 1084 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 1480 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 9 ms 1480 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 5000 ms 54668 KB Program timed out
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 1084 KB Output is correct
2 Correct 0 ms 1084 KB Output is correct
3 Runtime error 0 ms 1080 KB SIGSEGV Segmentation fault
4 Halted 0 ms 0 KB -