Submission
Status:
PPPPPPPPPP
Score: 100
User: kami
Problemset: เลขดวง
Language: cpp
Time: 0.002 second
Submitted On: 2024-10-16 00:12:35
#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;
for (int i = 0; i < MAX_WEEK; i++) {
for (int j = 0; j < MAX_DAY; j++) {
c[i][j] = 0;
}
}
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;
return;
}
}
}
}
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));
}