Submission #635820

#TimeUsernameProblemLanguageResultExecution timeMemory
635820PoonYaPatStrange Device (APIO19_strange_device)C++14
100 / 100
468 ms53336 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;

ll n,A,B,mod,ans;
vector<pll> v;

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin>>n>>A>>B;
    A=A/__gcd(A,B+1);

    if (A>2e18/B || A>2e18/B) mod=2e18;
    else mod=A*B;

    while (n--) {
        ll l,r;
        cin>>l>>r;
        if (r-l+1>=mod) {
            cout<<mod;
            return 0;
        }
        l%=mod;
        r%=mod;

        if (l<=r) v.push_back(pll(l,r));
        else v.push_back(pll(l,mod-1)), v.push_back(pll(0,r));
    }

    sort(v.begin(),v.end());
    ll l=v[0].first, r=v[0].second;

    for (auto s : v) {
        if (s.first<=r) {
            r=max(r,s.second);
        } else {
            ans+=r-l+1;
            l=s.first; r=s.second;
        }
    }
    ans+=r-l+1;
    cout<<ans;
}
#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...