# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
335155 | nicholask | Strange Device (APIO19_strange_device) | C++14 | 1574 ms | 34704 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define int long long
using namespace std;
int gcd(int a,int b){
while (b) b^=a^=b^=a%=b;
return a;
}
signed main(){
int n,a,b;
cin>>n>>a>>b;
a/=gcd(a,b+1);
pair <int,int> p[n];
for (int i=0; i<n; i++) cin>>p[i].first>>p[i].second;
int lim=(a<=(1e18+5)/b?a*b:1e18+5);
vector <pair <int,int> > v;
for (int i=0; i<n; i++){
if (p[i].second-p[i].first+1>=lim){
cout<<lim;
return 0;
}
p[i].first%=lim;
p[i].second%=lim;
if (p[i].first<=p[i].second) v.push_back({p[i].first,p[i].second});
else {
v.push_back({p[i].first,lim-1});
v.push_back({0,p[i].second});
}
}
sort(v.begin(),v.end());
int ans=0,lb=v[0].first,rb=v[0].second;
for (int i=1; i<v.size(); i++){
if (v[i].first>rb){
ans+=rb-lb+1;
rb=v[i].second;
lb=v[i].first;
} else rb=max(rb,v[i].second);
}
cout<<ans+rb-lb+1;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |