提出 #60913415


ソースコード 拡げる

#include <bits/stdc++.h>
#include <atcoder/modint>

namespace {
    using ModInt [[maybe_unused]] = atcoder::modint998244353;
    using Num [[maybe_unused]] = long long int;
    using Vec [[maybe_unused]] = std::vector<Num>;
    using Set [[maybe_unused]] = std::set<Num>;
    using Mset [[maybe_unused]] = std::multiset<Num>;
    using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;

    template<typename T>
    using Q [[maybe_unused]] = std::queue<T>;

    template<typename T>
    using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;

    const std::vector<std::pair<Num, Num>> dyxs {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
    std::map<char, std::pair<Num, Num>> directions {{'D', {1, 0}}, {'U', {-1, 0}}, {'R', {0, 1}}, {'L', {0, -1}}};

    template<typename T>
    void print_oneline(const std::vector<T>& vec, std::ostream& os) {
        const auto size = vec.size();
        for(size_t i{0}; i<size; ++i) {
            os << vec.at(i) << (((i+1) == size) ? '\n' : ' ');
        }
    }

    template<typename T>
    void print_each(const std::vector<T>& vec, std::ostream& os) {
        const auto size = vec.size();
        for(size_t i{0}; i<size; ++i) {
            os << vec.at(i) << '\n';
        }
    }
}

void solve(std::istream& is, std::ostream& os) {
    Num t {0};
    is >> t;

    while(t-- > 0) {
        Num a, b, c, d;
        is >> a >> b >> c >> d;

        if ((a < b) || (d < b)) {
            os << "No\n";
            continue;
        }

        if (c >= b) {
            os << "Yes\n";
            continue;
        }

        const auto rem = a % b;
        if (rem > c) {
            os << "No\n";
            continue;
        }

        const auto left = c - rem;
        const auto right = b - rem;
        const auto s = d % b;
        if (s == 0) {
            os << "Yes\n";
            continue;
        }

        const auto step = std::gcd(b, s);
        const auto l = step * (left / step);
        const auto r = l + step;
        if ((l <= left) && (r >= right)) {
            os << "Yes\n";
        } else {
            os << "No\n";
        }
    }
}

int main(void) {
    solve(std::cin, std::cout);
    return 0;
}

提出情報

提出日時
問題 B - rng_10s
ユーザ zettsut
言語 C++ 20 (gcc 12.2)
得点 600
コード長 2289 Byte
結果 AC
実行時間 2 ms
メモリ 3536 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 2
AC × 5
セット名 テストケース
Sample example_0, example_1
All example_0, example_1, multi_0, multi_1, multi_2
ケース名 結果 実行時間 メモリ
example_0 AC 1 ms 3536 KiB
example_1 AC 1 ms 3488 KiB
multi_0 AC 2 ms 3524 KiB
multi_1 AC 2 ms 3464 KiB
multi_2 AC 2 ms 3496 KiB