Submission

Status:
PPPPPPPPPP

Score: 100

User: kami

Problemset: เลขดวง

Language: cpp

Time: 0.001 second

Submitted On: 2024-10-16 00:09:13

#include <stdio.h>

#define MAX_DAY 7
#define MAX_WEEK 6


void Make_Calender(int c[MAX_WEEK][MAX_DAY], int day, int start){
    int cur = 1, week = 0, dw = start - 1;
    while(cur <= day){
        c[week][dw] = cur;
        cur++;
        dw++;
        if(dw == 7){
                dw = 0;
            week++;
        }
    }
}

void birth_direction(int c[MAX_WEEK][MAX_DAY], int birth, int *b_i, int *b_j){
    for(int i = 0; i < MAX_WEEK; i++){
        for(int j = 0; j < MAX_DAY; j++){
            if(c[i][j] == birth){
                *b_i = i;
                *b_j = j;
            }
        }
    }
}

int find_sum(int c[MAX_WEEK][MAX_DAY], int i, int j){
    int sum = 0;
    if(i - 1 >= 0 && c[i-1][j] > 0){ //up
        sum += c[i-1][j];
    }
    if(i + 1 <= MAX_WEEK - 1 && c[i+1][j] > 0){ //down
        sum += c[i+1][j];
    }
    if(j + 1 <= MAX_DAY - 1 && c[i][j+1] > 0){ //right
        sum += c[i][j+1];
    }
    if(j - 1 >= 0 && c[i][j-1] > 0){ //right
        sum += c[i][j-1];
    }
    return sum;
}

int main(){
    int start, day, birth, calender[MAX_WEEK][MAX_DAY] = {0}, *p, *q, b_i, b_j;
    scanf("%d %d %d",&day,&start,&birth);
    Make_Calender(calender, day, start);
    // for(int i = 0; i < MAX_WEEK; i++){
    //     for(int j = 0; j < MAX_DAY; j++){
    //         if(calender[i][j] == 0){
    //             printf("   ");
    //         }
    //         else{
    //             printf("%d ",calender[i][j]);
    //         }
            
    //     }
    //     printf("\n");
    // }

    p = &b_i;
    q = &b_j;
    birth_direction(calender, birth, p, q);
    printf("%d",find_sum(calender, b_i, b_j));

}