#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define V vector
#define pb push_back
#define P pair
struct segtree {
private:
struct node {
int maxd;
};
node single(int v) {
return {v};
}
node neutral={INT_MIN};
node merge(node a,node b) {
return {max(a.maxd,b.maxd)};
}
public:
int size;
V<node>query;
void init(int n) {
size=1;
while (size<n)size*=2;
query.assign(2*size,{INT_MIN});
}
void set(int i,int v,int x,int lx,int rx){
if (rx-lx==1) {
query[x]=single(v);
return;
}
int m=(lx+rx)/2;
if (i<m)
set(i,v,2*x+1,lx,m);
else
set(i,v,2*x+2,m,rx);
query[x]=merge(query[2*x+1],query[2*x+2]);
}
void set(int i,int v) {
set(i,v,0,0,size);
}
node calc(int l,int r,int x,int lx,int rx) {
if (lx>=r || rx<=l)return neutral;
if (l<=lx && rx<=r)return query[x];
int m=(lx+rx)/2;
node a=calc(l,r,2*x+1,lx,m);
node b=calc(l,r,2*x+2,m,rx);
return merge(a,b);
}
int calc(int l,int r) {
return calc(l,r,0,0,size).maxd;
}
};
void solve() {
ll n,a,b;
cin>>n>>a>>b;
set<P<ll,ll>>st;
while (n--) {
ll l,r;
cin>>l>>r;
for (ll i=l;i<=r;i++) {
st.insert({(i+i/b)%a,i%b});
}
}
cout<<st.size()<<endl;
}
int main() {
solve();
}
# | 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... |