Submission

Status:
--------------------

Score: 0

User: Angonnyyy

Problemset: ปฏิทินวันแม่

Language: c

Time: 0.001 second

Submitted On: 2024-09-26 01:14:34

#include <stdio.h>
#include <stdlib.h>

const int MONTHS[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

const int MOTHER_MONTH = 8;
const int MOTHER_DAY = 12;

int* manipulate_months(int *months, int m);

int main(int argc, char *argv[])
{
    int m;
    int d;

    scanf("%d", &m);
    scanf("%d", &d);

    size_t month_size = sizeof(MONTHS) / sizeof(MONTHS[0]);
    
    int months_difference = MOTHER_MONTH - m;

    int* manipulated = manipulate_months(MONTHS, m);

    // printf("size: %d\n\n", man[0]);

    int days_apart = MOTHER_DAY;

    for (int i = 1; i < *manipulated; i++)
    {
        // printf("%d\n", *(man + i));

        days_apart += *(manipulated + i);
    }

    free(manipulated);

    // printf("days apart: %d\n", days_apart);

    int mod = (days_apart + d - 1) % 7;

    printf("mod %d\n", mod);

    return 0;
}

int* manipulate_months(int *months, int m)
{
    int difference = MOTHER_MONTH - m;

    // printf("difference: %d\n", difference);

    int* new_months;

    if (difference == 0)
    {
        new_months = malloc(sizeof(int));

        new_months[0] = 0;
    } 

    else if (difference > 0)
    {
        int adjusted_difference = difference + 1;


        // printf("mallocing2\n");
        new_months = malloc(sizeof(int) * adjusted_difference);

        new_months[0] = adjusted_difference;

        for (int i = 0; i < difference; i++) 
        {
            *(new_months + 1 + i) = *(months + i + m - 1);
        }
    }

    else
    {
        int adjusted_difference = difference + 1 + 12;

        new_months = malloc(sizeof(int) * (adjusted_difference + 1));

        new_months[0] = adjusted_difference;

        int e = 0;
        for (; e < 12 - m + 1; e++)
        {
            *(new_months + 1 + e) = *(months + e + m - 1);
        }

        for (int i = 0; i < MOTHER_MONTH; i++)
        {
            *(new_months + 1 + e + i) = *(months + i);
        }
    }

    return new_months;
}