結果

問題 No.3402 [Cherry Anniversary 5] Beyond Zelkova, the 5th year vista seen through the bloom of a cherry bloosom
コンテスト
ユーザー GOTKAKO
提出日時 2025-12-09 00:12:16
言語 C++17
(gcc 13.3.0 + boost 1.89.0)
結果
AC  
実行時間 12 ms / 2,000 ms
コード長 1,653 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,963 ms
コンパイル使用メモリ 195,880 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-12-09 00:12:19
合計ジャッジ時間 3,288 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 24
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    auto Year = [&](int y) -> int {
        if(y%400 == 0) return 366;
        if(y%100 == 0) return 365;
        if(y%4 == 0) return 366;
        return 365; 
    };
    auto Month = [&](int y,int m) -> int {
        if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) return 31;
        else if(m != 2) return 30;
        if(Year(y) == 366) return 29;
        return 28;
    };

    auto count = [&](int y,int m,int d,int &y2,int &m2,int &d2) -> int {
        int ret = 1;
        if(y < y2){
            if(d != 1){
                int D = Month(y,m);
                ret += D-d+1;
                d = 1,m++;
                if(m == 13) m = 1,y++;
            }
            while(m != 1){
                ret += Month(y,m);
                m++;
                if(m == 13) m = 1,y++;  
            }
        }
        while(y < y2) ret += Year(y++);
        if(m < m2){
            if(d != 1){
                int D = Month(y,m);
                ret += D-d+1;
                d = 1,m++;
                if(m == 13) m = 1,y++;
            }
            while(m < m2) ret += Month(y,m),m++;
        }
        if(d < d2) ret += d2-d;
        return ret;
    };

    int y1,m1,d1,y2,m2,d2; cin >> y1 >> m1 >> d1 >> y2 >> m2 >> d2;
    int X = count(y1,m1,d1,y2,m2,d2);
    int Q; cin >> Q;
    while(Q--){
        int y3,m3,d3; cin >> y3 >> m3 >> d3;
        int Y = count(y2,m2,d2,y3,m3,d3)-1;
        if(X == Y) cout << "Same\n";
        else if(X < Y) cout << "More\n";
        else cout << "Less\n";
    }
}
0