提出 #60559177


ソースコード 拡げる

#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 n, a, b, c, d;
    is >> n >> a >> b >> c >> d;
    --n;
    const auto n2 = n / 2;

    if (a > b) {
        std::swap(a,b);
    }
    b -= a;
    const auto w = d - c;

    if (n == 1) {
        if ((c <= b) && (b <= d)) {
            os << "YES\n";
        } else {
            os << "NO\n";
        }
        return;
    }


    std::vector<std::pair<Num,Num>> rs;
    Num odd = n % 2;
    if (((c * 2) <= d) && (b <= (d * n))) {
        os << "YES\n";
        return;
    }

    for(Num i{1}; i<=n2; ++i) {
        const auto p = i * 2 + odd;
        const auto m = n2 - i;
        const auto l = c * p - m * w;
        const auto r = d * p + m * w;
        rs.push_back(std::make_pair(l, r));
    }

    std::ranges::sort(rs);
    for(const auto& [l,r] : rs) {
        if ((l <= b) && (b <= r)) {
            os << "YES\n";
            return;
        }
    }

    os << "NO\n";
}

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

提出情報

提出日時
問題 B - Moderate Differences
ユーザ zettsut
言語 C++ 20 (gcc 12.2)
得点 400
コード長 2359 Byte
結果 AC
実行時間 7 ms
メモリ 7436 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 4
AC × 38
セット名 テストケース
Sample sample1.txt, sample2.txt, sample3.txt, sample4.txt
All sample1.txt, sample2.txt, sample3.txt, sample4.txt, a01.txt, a02.txt, a03.txt, a04.txt, b01.txt, b02.txt, b03.txt, b04.txt, c01.txt, c02.txt, c03.txt, c04.txt, d01.txt, d02.txt, d03.txt, d04.txt, d05.txt, d06.txt, d07.txt, d08.txt, d09.txt, d10.txt, d11.txt, d12.txt, d13.txt, d14.txt, d15.txt, d16.txt, d17.txt, d18.txt, sample1.txt, sample2.txt, sample3.txt, sample4.txt
ケース名 結果 実行時間 メモリ
a01.txt AC 1 ms 3688 KiB
a02.txt AC 3 ms 5344 KiB
a03.txt AC 1 ms 3688 KiB
a04.txt AC 2 ms 4292 KiB
b01.txt AC 4 ms 5344 KiB
b02.txt AC 6 ms 7328 KiB
b03.txt AC 6 ms 7280 KiB
b04.txt AC 1 ms 3840 KiB
c01.txt AC 4 ms 7436 KiB
c02.txt AC 6 ms 7268 KiB
c03.txt AC 5 ms 7352 KiB
c04.txt AC 5 ms 7432 KiB
d01.txt AC 3 ms 5276 KiB
d02.txt AC 1 ms 3620 KiB
d03.txt AC 2 ms 4212 KiB
d04.txt AC 6 ms 7292 KiB
d05.txt AC 7 ms 7352 KiB
d06.txt AC 2 ms 4280 KiB
d07.txt AC 1 ms 3612 KiB
d08.txt AC 4 ms 5260 KiB
d09.txt AC 2 ms 4232 KiB
d10.txt AC 5 ms 7368 KiB
d11.txt AC 6 ms 7352 KiB
d12.txt AC 7 ms 7284 KiB
d13.txt AC 2 ms 4148 KiB
d14.txt AC 3 ms 5256 KiB
d15.txt AC 4 ms 5248 KiB
d16.txt AC 6 ms 7304 KiB
d17.txt AC 1 ms 3840 KiB
d18.txt AC 4 ms 5204 KiB
sample1.txt AC 1 ms 3552 KiB
sample2.txt AC 1 ms 3592 KiB
sample3.txt AC 1 ms 3744 KiB
sample4.txt AC 7 ms 7272 KiB