Submission #1359918

#TimeUsernameProblemLanguageResultExecution timeMemory
1359918Ekber_EkberStrange Device (APIO19_strange_device)C++20
35 / 100
395 ms63056 KiB
#include <bits/stdc++.h>
#define GOOD_LUCK ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define int long long
#define endl "\n"
#define ff first
#define ss second
#define pb push_back
#define all(v) v.begin(), v.end()
using namespace std;

constexpr int MAX = 2e+5 + 1, INF = 2e+16, MOD = 1e+9 + 7, K = 31;

void _() {
    int n, a, b;
    cin >> n >> a >> b;
    double x1 = 1. * a / gcd(a, b + 1);
    double x2 = log10(1. * b);
    x1 = log10(x1);
    if (x1 + x2 > 18.) {
        cout << 0;
        return;
    }
    int x = a / gcd(a, b+1) * b;
    set <pair<int,int>> s;
    for (int i = 0; i < n; i++) {
        int l, r;
        cin >> l >> r;
        if (r - l + 1 > x) {
            cout << x;
            return;
        }
        r %=x;
        l %= x;
        if (l <= r) s.insert({l, r});
        if (l > r) {
            s.insert({l, x-1});
            s.insert({0, r});
        }
    }
    int res=0;
    while (!s.empty()) {
        auto f = *s.begin();
        if (s.size() == 1) {
            res += f.ss - f.ff + 1;
            break;
        }
        auto it = s.begin();
        ++it;
        auto f1 = *it;
        if (f.ss < f1.ff) {
            res += f.ss - f.ff + 1;
            s.erase(s.begin());
            continue;
        }
        s.erase(s.begin());
        s.erase(s.begin());
        s.insert({f.ff, max(f.ss, f1.ss)});
    }
    cout << res;
}

signed main() {

    GOOD_LUCK

    int tests=1;
    // cin >> tests;
    for (int i=1; i <= tests; i++) {
        _();
        cout << endl;
    }

    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...