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 ll long long
#define db long double
#define N 4000002
#define II pair <ll,ll>
#define fst first
#define snd second
using namespace std;
ll n,a,b,l,r,m,i;
II c[N];
void sub1()
{
ll res=0;
for(i=1;i<=n;i++) cin>>l>>r,res+=(r-l+1);
cout<<res;
}
void add(ll l,ll r) { c[++m]={ l,1 }; c[++m]={ r,-1 }; }
void sub2()
{
for(i=1;i<=n;i++)
{
cin>>l>>r;
if(r-l+1>=a*b) { cout<<a*b; return ; }
l=l%(a*b); r=r%(a*b);
if(l<=r) add(l,r);
else add(l,a*b-1),add(0,r);
}
sort(c+1,c+m+1);
c[0]={ -1,1 };
ll cnt=0,res=0;
for(i=1;i<=m;i++)
{
if(c[i].fst>c[i-1].fst)
{
if(cnt>0) res+=c[i].fst-c[i-1].fst;
else res++;
}
cnt+=c[i].snd;
}
cout<<res;
}
int main()
{
// freopen("ntu.inp","r",stdin);
//freopen("ntu.out","w",stdout);
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n>>a>>b;
if(b>round(1e18)/a) sub1();
else sub2();
}
# | 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... |