제출 #1044725

#제출 시각아이디문제언어결과실행 시간메모리
1044725vjudge1이상한 기계 (APIO19_strange_device)C++17
0 / 100
552 ms63032 KiB
#include <bits/stdc++.h> using namespace std; #define fast ios::sync_with_stdio(0);cin.tie(0); typedef long long ll; #define f first #define s second #define LOGN 21 const ll MOD = 1e9 + 7; const ll MAXN = 3e4 + 100; #define int long long set<pair<int,int>> st; void add_seg(int l, int r) { if (st.size()) { auto x = st.lower_bound(make_pair(l, 0)); if (x != st.begin()) { x--; if ((*x).s >= l) { l = min(l, (*x).f); st.erase(x); } } x = st.lower_bound(make_pair(l, 0)); if (x != st.end() && (*x).f <= r) { r = max(r, (*x).s); st.erase(x); } } st.insert({l, r}); } signed main() { fast ll n, A, B; cin >> n >> A >> B; if (1e9 * 1LL * 1e9 / A <= B) { int ans = 0; for (int i = 0; i < n; i++) { int l, r; cin >> l >> r; ans += r - l + 1; } cout << ans << "\n"; } A *= B; for (int i = 0; i < n; i++) { int l, r; cin >> l >> r; int x = l % A; int y = r % A; if (y < x || r - l + 1 >= A) { add_seg(x, A-1); add_seg(0, y); } else add_seg(x, y); } ll ans = 0; for (auto u : st) ans += u.s - u.f + 1; cout << ans << "\n"; }
#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...