Submission #1044806

#TimeUsernameProblemLanguageResultExecution timeMemory
1044806efedmrlrStrange Device (APIO19_strange_device)C++17
100 / 100
298 ms39752 KiB
// #pragma GCC optimize("O3,Ofast,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include <bits/stdc++.h>

using namespace std;


#define int long long int
#define MP make_pair
#define pb push_back
#define REP(i,n) for(int i = 0; (i) < (n); (i)++)
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()


void fastio() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}


const double EPS = 0.00001;
const int INF = 1e18 + 5;
const int N = 3e5+5;
const int ALPH = 26;
const int LGN = 25;
constexpr int MOD = 1e9+7;
int n,m,q;



inline void solve() {
    int A, B;
    cin >> n >> A >> B;
    __int128_t space = (__int128_t)A / __gcd(A, B + 1) * B;
    space = min(space, (__int128_t)INF);
    int sp = (int)space;
    
    vector<array<int, 2> > inter;
    
    REP(i, n) {
        int l, r;
        cin >> l >> r;
        if(r - l + 1 >= sp) {
            cout << sp << "\n";
            return;
        } 
        l %= sp; r %= sp;
        if(l > r) {
            inter.pb({0, r});
            inter.pb({l, sp - 1});
        }
        else {
            inter.pb({l, r});
        }
    }
    int last = 0;
    int ans = 0;
    sort(all(inter));
    for(auto c : inter) {
        c[0] = max(last, c[0]);
        if(c[0] > c[1]) continue;
        ans += c[1] - c[0] + 1;
        last = c[1] + 1;
    }
    cout << ans << "\n";
    
}
 
signed main() {

    fastio();
    int test = 1;
    //cin>>test;
    while(test--) {
        solve();
    }
    
}
#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...