Submission #445171

#TimeUsernameProblemLanguageResultExecution timeMemory
445171benedict0724Strange Device (APIO19_strange_device)C++17
100 / 100
596 ms59208 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; vector<pair<ll, ll>> v1, v2; ll gcd(ll x, ll y) { if(y == 0) return x; return gcd(y, x%y); } int main() { ios::sync_with_stdio(false); cin.tie(NULL); ll n, A, B; cin >> n >> A >> B; ll T = 1e18, S, G; G = gcd(A, B+1); A /= G; if(T/A >= B) S = A * B; else S = 1e18 + 7; //cout << S << "\n"; for(int i=1;i<=n;i++) { ll l, r; cin >> l >> r; if(r - l + 1 >= S) { v1.push_back({0, S-1}); continue; } l %= S, r %= S; if(l <= r) v1.push_back({l, r}); else { v1.push_back({l, S-1}); v1.push_back({0, r}); } } sort(v1.begin(), v1.end()); int m = v1.size(); if(m == 1) v2.push_back(v1[0]); for(ll i=1,s=v1[0].first,e=v1[0].second;i<m;i++) { if(v1[i].first <= e) e = max(v1[i].second, e); else { v2.push_back({s, e}); s = v1[i].first; e = v1[i].second; } if(i == m-1) v2.push_back({s, e}); } m = v2.size(); ll ans = 0; for(int i=0;i<m;i++) ans += v2[i].second - v2[i].first + 1; cout << ans; }
#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...