Submission #60559177


Source Code Expand

#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;
}

Submission Info

Submission Time
Task B - Moderate Differences
User zettsut
Language C++ 20 (gcc 12.2)
Score 400
Code Size 2359 Byte
Status AC
Exec Time 7 ms
Memory 7436 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 4
AC × 38
Set Name Test Cases
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
Case Name Status Exec Time Memory
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