Submission #1189114

#TimeUsernameProblemLanguageResultExecution timeMemory
1189114AvianshStrange Device (APIO19_strange_device)C++20
10 / 100
280 ms40548 KiB
#include <bits/stdc++.h> using namespace std; signed main(){ ios::sync_with_stdio(0); cin.tie(0); long long n,a,b; cin >> n >> a >> b; long long lc = a*b; if(ceil(log2(a))+ceil(log2(b))>60){ lc=1e18+5; } assert(lc>0); //0->(lc-1) vector<array<long long,2>>rangs; for(int i = 0;i<n;i++){ long long l,r; cin >> l >> r; long long lmod = l%lc; long long rmod = r%lc; long long req = lc-lmod-1; if(l+req<=r){ //lmod-end is to be added. rangs.push_back({lmod,lc-1}); } else{ rangs.push_back({lmod,rmod}); } l+=req+1; assert(l%lc==0); lmod=l%lc; if(l+lc-1<=r){ rangs.push_back({0,lc-1}); } else if(l<=r){ rangs.push_back({0,rmod}); } } sort(rangs.begin(),rangs.end()); vector<array<long long,2>>ne; ne.push_back(*rangs.begin()); for(array<long long,2>a:rangs){ if(ne.back()[1]<a[0]){ ne.push_back(a); } else{ ne.back()[1]=max(ne.back()[1],a[1]); } } long long ans = 0; for(array<long long,2>a:ne){ ans+=a[1]-a[0]+1; } cout << (long long)ans; 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...