제출 #1143084

#제출 시각아이디문제언어결과실행 시간메모리
1143084boris_mihov이상한 기계 (APIO19_strange_device)C++20
100 / 100
276 ms32652 KiB
#include <algorithm> #include <iostream> #include <numeric> #include <cassert> #include <vector> #include <set> typedef long long llong; const int MAXN = 1e6 + 10; const llong INF = 2e18; int n; llong a, b; llong l[MAXN]; llong r[MAXN]; std::vector <std::pair <llong, llong>> v; void solve() { llong aPrim = a / std::__gcd(a, b + 1); if (aPrim > INF / b) { llong sum = 0; for (int i = 1 ; i <= n ; ++i) { sum += r[i] - l[i] + 1; } std::cout << sum << '\n'; return; } llong s = aPrim * b; for (int i = 1 ; i <= n ; ++i) { if (r[i] - l[i] + 1 >= s) { std::cout << s << '\n'; return; } if (l[i] % s <= r[i] % s) { v.push_back({l[i] % s, r[i] % s}); } else { v.push_back({l[i] % s, s - 1}); v.push_back({0, r[i] % s}); } } llong sum = 0; llong last = -1; std::sort(v.begin(), v.end(), [&](auto x, auto y) { return x.first < y.first; }); for (const auto &[l, r] : v) { sum += std::max(0LL, r - std::max(last, l - 1)); last = std::max(last, r); } std::cout << sum << '\n'; } void input() { std::cin >> n >> a >> b; for (int i = 1 ; i <= n ; ++i) { std::cin >> l[i] >> r[i]; } } void fastIOI() { std::ios_base :: sync_with_stdio(0); std::cout.tie(nullptr); std::cin.tie(nullptr); } int main() { fastIOI(); input(); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...