제출 #1057631

#제출 시각아이디문제언어결과실행 시간메모리
1057631DucNguyen2007Strange Device (APIO19_strange_device)C++14
100 / 100
377 ms115960 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pii pair<int,int> #define pll pair<ll,ll> #define fi first #define se second const int maxN=1e6+5; const ll inf=2e18; int n; ll a,b; pll p[maxN+1]; set<pll> se; int main() { //freopen("","r",stdin); //freopen("","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>a>>b; for(int i=1;i<=n;i++) { cin>>p[i].fi>>p[i].se; } ll x=inf,d=__gcd(a,b+1); if((ld)1.0*inf/b<a/d) { x=inf; } else x=b*(a/d); for(int i=1;i<=n;i++) { if(p[i].se-p[i].fi+1>=x) { cout<<x; return 0; } ll lmod=p[i].fi%x,rmod=p[i].se%x; if(lmod>rmod) { se.insert({lmod,x-1}); se.insert({0,rmod}); } else se.insert({lmod,rmod}); } ll ans=0,mx=-1; for(auto i:se) { ans+=max(0ll,i.se-max(mx+1,i.fi)+1); mx=max(mx,i.se); } 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...