Submission #1279018

#TimeUsernameProblemLanguageResultExecution timeMemory
1279018janson0109Strange Device (APIO19_strange_device)C++20
100 / 100
439 ms49204 KiB
#include <bits/stdc++.h> #define F first #define S second #define lol ios::sync_with_stdio(false);cin.tie(NULL); typedef __int128 ll; typedef long double ld; using namespace std; const ll M = 998244353; int main() { lol long long n, a, b; cin >> n >> a >> b; vector<pair<long long,long long>> lr(n); for(ll i=0; i<n; i++) cin >> lr[i].F >> lr[i].S; ll m = ((ll)a)*((ll)b)/((ll)gcd(a, b+1)); vector<pair<ll,ll>> in; for(ll i=0; i<n; i++) { if(lr[i].S - lr[i].F >= m - 1) {cout << ((long long) m); return 0;} ll d = ((lr[i].S)/m) * m; if(d > lr[i].F) { in.push_back({lr[i].F % m, m-1}); in.push_back({0, lr[i].S % m}); } else in.push_back({lr[i].F % m, lr[i].S % m}); } sort(in.begin(), in.end()); in.push_back({m, m}); ll curmx = -1, cur = 0, ans = 0; for(auto & x : in) { if(x.F > curmx) { ans += (curmx - cur + 1); curmx = x.S, cur = x.F; } else curmx = max(x.S, curmx); } cout << ((long long)ans); 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...