제출 #205867

#제출 시각아이디문제언어결과실행 시간메모리
205867mraron이상한 기계 (APIO19_strange_device)C++14
100 / 100
2340 ms67188 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n,a,b; cin>>n>>a>>b; ll len=0; vector<pair<ll,ll>> lst(n); for(int i=0;i<n;++i) { cin>>lst[i].first>>lst[i].second; len+=lst[i].second-lst[i].first+1; } ll div=__gcd(a,b+1); __int128 A=a/div; __int128 B=b; if(A*B>__int128(1000000000000000000LL)) { cout<<len<<"\n"; return 0; } ll mod=(a/div)*b; vector<pair<ll,ll>> ivs; for(auto i:lst) { ll div1=i.first/mod, div2=i.second/mod; ll mod1=i.first%mod, mod2=i.second%mod; if(mod1<=mod2) { if(div1<div2) { cout<<mod<<"\n"; return 0; } ivs.push_back({mod1,mod2}); }else { if(div1+1==div2) { ivs.push_back({mod1, mod-1}); ivs.push_back({0,mod2}); }else { cout<<mod<<"\n"; return 0; } } } sort(ivs.begin(), ivs.end()); ll last=-1; ll ans=0; for(auto i:ivs) { if(last<i.second) { ans+=i.second-max(last+1, i.first)+1; } last=max(last, i.second); } cout<<ans<<"\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...