Submission #1200102

#TimeUsernameProblemLanguageResultExecution timeMemory
1200102adiyerStrange Device (APIO19_strange_device)C++20
100 / 100
304 ms32760 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 11; ll n, a, b, c, res; ll l[N], r[N]; __int128 val; vector < pair < ll, ll > > seg; void solve(){ cin >> n >> a >> b; for(ll i = 1; i <= n; i++) cin >> l[i] >> r[i]; val = a / __gcd(a, b + 1), val *= b; if(val > 1e18){ for(ll i = 1; i <= n; i++) res += r[i] - l[i] + 1; cout << res; return; } c = val; for(ll i = 1; i <= n; i++){ if(r[i] - l[i] + 1 >= c){ cout << c << '\n'; return; } l[i] %= c, r[i] %= c; if(l[i] <= r[i]) seg.push_back({l[i], r[i]}); else seg.push_back({l[i], c - 1}), seg.push_back({0, r[i]}); } sort(seg.begin(), seg.end()); ll mx = -1; for(auto [l, r] : seg){ if(r > mx){ res += r - max(l - 1, mx); mx = r; } } cout << res; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); int tt = 1; // cin >> tt; while(tt--) solve(); }
#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...