제출 #1135794

#제출 시각아이디문제언어결과실행 시간메모리
1135794huutuan이상한 기계 (APIO19_strange_device)C++20
100 / 100
291 ms32720 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int N=1e6+10, inf=2e18; int n, a, b; int l[N], r[N]; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> a >> b; for (int i=1; i<=n; ++i) cin >> l[i] >> r[i]; int mod=a/__gcd(b+1, a); if (mod>inf/b){ int ans=0; for (int i=1; i<=n; ++i) ans+=r[i]-l[i]+1; cout << ans << '\n'; return 0; } mod*=b; vector<pair<int, int>> v; for (int i=1; i<=n; ++i){ if (r[i]-l[i]+1>=mod){ cout << mod << '\n'; return 0; } l[i]%=mod; r[i]%=mod; if (l[i]>r[i]){ v.emplace_back(l[i], mod-1); v.emplace_back(0, r[i]); }else{ v.emplace_back(l[i], r[i]); } } sort(v.begin(), v.end()); int ans=0; int ll=0, rr=-1; for (auto &i:v){ if (rr+1>=i.first) rr=max(rr, i.second); else{ ans+=rr-ll+1; ll=i.first, rr=i.second; } } cout << ans+rr-ll+1 << '\n'; 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...