Submission #977089

#TimeUsernameProblemLanguageResultExecution timeMemory
977089dubabubaStrange Device (APIO19_strange_device)C++14
100 / 100
1427 ms99036 KiB
#include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii; #define ff first #define ss second #define MP make_pair int gcd(int a, int b) { if(a == 0) return b; if(b == 0) return a; return gcd(b % a, a); } signed main() { int a, b, n, t; cin >> n >> a >> b; int d = gcd(a, b + 1); double sda = 1.0 * a / d * b; if(sda <= 1e18) t = a / d * b; else t = 1e18; set<pii> v; int l, r; bool gay = false; for(int i = 0; i < n; i++) { cin >> l >> r; if(r - l + 1 >= t) { gay = 1; continue; } l %= t; r %= t; if(l <= r) { // root->upt(l, r); v.insert(MP(l, r)); } else { // root->upt(l, t - 1); // root->upt(0, r); v.insert(MP(l, t - 1)); v.insert(MP(0, r)); } } if(gay) { cout << t << endl; // if(t == (int) 1e18) // return 1; return 0; } v.insert(MP(2e18, 2e18)); int ans = 0; l = (*v.begin()).ff, r = l; for(pii p : v) { if(r < p.ff) { ans += (r - l + 1); l = p.ff; r = p.ss; } r = max(r, p.ss); } if(ans < 0) return 1; cout << ans << endl; 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...