Submission #316851

#TimeUsernameProblemLanguageResultExecution timeMemory
316851sofapudenStrange Device (APIO19_strange_device)C++14
100 / 100
766 ms36932 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n, a, b; cin >> n >> a >> b; ll mod = __gcd(a,b+1); ll ans = 0; if((a/mod) <= LONG_LONG_MAX/b)mod=(a/mod)*b; else mod = (ll)2e18; vector<array<ll,2>> inter; for(int i = 0; i < n; ++i){ ll l, r; cin >> l >> r; if(r-l+1 >= mod){ cout << mod << "\n"; return 0; } l %= mod, r %= mod; if(l<=r)inter.push_back({l,0ll}), inter.push_back({r,1ll}); else inter.push_back({l,0ll}), inter.push_back({0ll,0ll}), inter.push_back({mod-1,1ll}), inter.push_back({r,1ll}); } sort(inter.begin(),inter.end()); ll cn = 0; for(int i = 0; i < (int)inter.size(); ++i){ if(inter[i][1] == 0){ cn++; if(cn == 1){ if(i)ans+=inter[i][0]-inter[i-1][0]-1ll; else ans+=inter[i][0]; } } else cn--; } ans = 1+inter[(inter.size()-1)][0]-ans; cout << ans << "\n"; }
#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...