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>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
#define int ll
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef vector<vii> vvii;
#define INF INT_MAX
#define MOD 1000000007
#define all(x) x.begin(), x.end()
signed main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int Q, A, B; cin >> Q >> A >> B;
int A1 = A/__gcd(A, B+1);
if(A1 <= int(1e18)/B) A1 *= B;
else A1 = 1e18+10;
vii RC; RC.reserve(Q*2);
while(Q--){
int l, r; cin >> l >> r;
if(r-l+1 >= A1) RC.push_back({0, A1-1});
else{
int lm = l%A1, rm = r%A1;
if(lm <= rm) RC.push_back({lm, rm});
else RC.push_back({lm, A1-1}), RC.push_back({0, rm});
}
}
sort(all(RC)); int ans = 0, prev = -1;
for(auto [l, r] : RC){
l = max(l, prev+1);
ans += max(0ll, r-l+1);
prev = max(prev, r);
}
cout << ans << endl;
return 0;
}
# | 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... |