Submission #1316335

#TimeUsernameProblemLanguageResultExecution timeMemory
1316335wangzhiyi33Strange Device (APIO19_strange_device)C++20
100 / 100
626 ms78724 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ii pair<int,int> #define fir first #define sec second #define pb push_back int inf=1e18; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n,a,b; cin>>n>>a>>b; int brp=a/__gcd(a,(b+1)); int mod; if(inf/brp>=b){ mod=brp*b; } else{ mod=-1; } int l[n+1],r[n+1]; int tot=0,mx=0; for(int q=1;q<=n;q++){ cin>>l[q]>>r[q]; tot+=(r[q]-l[q]+1); mx=max(mx,r[q]-l[q]+1); } // cout<<mod<<endl; if(mod==-1){ cout<<tot<<endl; } else{ if(mx>=mod){ cout<<mod<<endl; } else{ map<int,int>mp; for(int q=1;q<=n;q++){ l[q]%=mod,r[q]%=mod; if(l[q]<=r[q]){ mp[l[q]]++,mp[r[q]+1]--; } else{ mp[l[q]]++;mp[mod]--; mp[0]++,mp[r[q]+1]--; } } int tot=0,prv=0; int ans=0; for(auto x : mp){ if(tot){ ans+=(x.fir-prv); } tot+=x.sec; prv=x.fir; } cout<<ans<<endl; } } }
#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...