Submission

Status:

PPP--P----

Subtask/Task Score:

40/100

Score: 40

User: fluke

Problemset: Journey of Love

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-05 15:48:12

#include <bits/stdc++.h>
#define ll long long 
#define f first 
#define s second 
#define pii pair<int,int>
#define emb emplace_back 
#define emf emplace_front 
#define em emplace 
#define all(x) x.begin(),x.end()
#define DB cout<<"\n";system("pause");
#define sp <<" "<<
#define inf (int)(1e9)
#define INF (ll)(1e18)
#define mod (ll)(1e9+7)
using namespace std;

struct date{
    int year;
    int month;
    int day;
    int hour;
    int minute;
    int second;
};  

bool leapyear(int a){
    if(a % 400 == 0)return true;
    if(a % 100 == 0)return false;
    if(a % 4 == 0)return true;
    return false;
}

int q;
date start;

int main(){
ios::sync_with_stdio(false);cin.tie(0);
    cin >> start.year >> start.month >> start.day >> start.hour >> start.minute >> start.second;
    cin >> q;


    bool leap_year_start = leapyear(start.year);
    int second_left = 0;

    if(leap_year_start){

        second_left += start.second;
        second_left += start.minute*60;
        second_left += start.hour*3600;
        second_left += (start.day-1)*86400;

        for(int i=1;i<start.month;i++){
            if(i == 2)second_left += 2505600;
            else if(i == 1 || i == 3 || i == 7 || i == 8 || i == 10 || i == 12)second_left += 2678400;
            else second_left += 2592000;
        }

    }
    else {

        second_left += start.second;
        second_left += start.minute*60;
        second_left += start.hour*3600;
        second_left += (start.day-1)*86400;

        for(int i=1;i<start.month;i++){
            if(i == 2)second_left += 2419200;
            else if(i == 1 || i == 3 || i == 7 || i == 8 || i == 10 || i == 12)second_left += 2678400;
            else second_left += 2592000;
        }

    }

    // cout<<second_left;
    // DB;


    while(q--){
        int add;
        cin>>add;

        date ans;
        ans.year = start.year;
        
        add += second_left;
        
        while(true){
            bool leap_year = leapyear(ans.year); 

            if(leap_year){
                if(add >= 31622400){
                    add -= 31622400;
                    ans.year ++ ;
                }
                else break;
            }
            else {
                if(add >= 31536000){
                    add -= 31536000;
                    ans.year ++ ;
                }
                else break;
            }

        }

        bool leap_yaer = leapyear(ans.year);
        if(leap_yaer){
            for(int i=1;i<=12;i++){
            
                if(i == 2){
                    if(add >= 2505600)add -= 2505600;
                    else {
                        ans.month = i;
                        break;
                    }
                }
                else if(i == 1 || i == 3 || i == 7 || i == 8 || i == 10 || i == 12){
                    if(add >= 2678400)add -= 2678400;
                    else {
                        ans.month = i;
                        break;
                    }
                }
                else {
                    if(add >= 2592000)add -= 2592000;
                    else {
                        ans.month = i;
                        break;
                    }
                }

            }
            
        }
        else {
            for(int i=1;i<=12;i++){
            
                if(i == 2){
                    if(add >= 2419200)add -= 2419200;
                    else {
                        ans.month = i;
                        break;
                    }
                }
                else if(i == 1 || i == 3 || i == 7 || i == 8 || i == 10 || i == 12){
                    if(add >= 2678400)add -= 2678400;
                    else {
                        ans.month = i;
                        break;
                    }
                }
                else {
                    if(add >= 2592000)add -= 2592000;
                    else {
                        ans.month = i;
                        break;
                    }
                }

            }
        }


        ans.day = (add+86399)/86400;
        add = add%86400;

        if(ans.day == 0)ans.day = 1;

        ans.hour = add/3600;
        add = add%3600;

        ans.minute = add/60;
        ans.second = add%60;


        cout<<ans.year sp ans.month sp ans.day sp ans.hour sp ans.minute sp ans.second <<"\n";
    }

}
/*
1 minute        = 60
1 hour          = 3600
1 day           = 86400

january(31)     = 2678400 1
fabruary(28)    = 2419200 2
fabruary(29)    = 2505600 2
march(31)       = 2678400 3
april(30)       = 2592000 4
may(30)         = 2592000 5
june(30)        = 2592000 6
july(31)        = 2678400 7
august(31)      = 2678400 8 
septemper(30)   = 2592000 9
october(31)     = 2678400 10 
november(30)    = 2592000 11
december(31)    = 2678400 12

leap year 366   = 31622400
nomal yaer 365  = 31536000



*/