Submission

Status:
P-PPPPPPPP

Score: 90

User: real_MYdkn_not_fake_100

Problemset: E.Comet

Language: c

Time: 0.002 second

Submitted On: 2024-10-14 15:32:53

#include <stdio.h>
int get_days(int year){
    if((year%4==0&&year%100!=0)||year%400==0)
        return 366;
    return 365;
}
int main(){
    int d,m,y;
    scanf("%d %d %d",&d,&m,&y);
    int rev,times;
    scanf("%d %d",&rev,&times);
    int month[]={31,-1,31,30,31,30,31,31,30,31,30,31};
    for(int i=0;i<times;++i){
        int left=rev;
        month[1]=get_days(y)-337;
        int add_m=0;
        for(int j=m-1;j<12;++j){
    if(left>= month[j]-d+1)
        left-=month[j]-d+1;  // +1 to handle the current day properly
    else{
        d+=left;
        left=0;
        if(d>month[j]){
            ++add_m;
            d-=month[j];
        }
        break;
    }
    d=1;  // reset to day 1 when moving to the next month
    if(j==11)++y;
}

m=1+add_m;
if(m>12){
    ++y;
    m-=12;
}
while(left>=get_days(y))
    left-=get_days(y++);

month[1]=get_days(y)-337;
for(int j=0;left>=month[j];++j){
    left-=month[j];
    ++m;
    if(m>12){
        ++y;
        m=1;
    }
}
while(left-- > 0)
    ++d;
        
    }
    printf("%d %d %d",d,m,y);
    return 0;
}