Submission #404764

#TimeUsernameProblemLanguageResultExecution timeMemory
404764gevacrtStrange Device (APIO19_strange_device)C++17
100 / 100
584 ms35144 KiB
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

#define int ll

typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef vector<vii> vvii;

#define INF INT_MAX
#define MOD 1000000007
#define all(x) x.begin(), x.end()

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int Q, A, B; cin >> Q >> A >> B;
    int A1 = A/__gcd(A, B+1);

    if(A1 <= int(1e18)/B) A1 *= B;
    else A1 = 1e18+10;


    vii RC; RC.reserve(Q*2);
    while(Q--){
        int l, r; cin >> l >> r;
        if(r-l+1 >= A1) RC.push_back({0, A1-1});
        else{
            int lm = l%A1, rm = r%A1;
            if(lm <= rm) RC.push_back({lm, rm});
            else RC.push_back({lm, A1-1}), RC.push_back({0, rm});
        }
    }

    sort(all(RC)); int ans = 0, prev = -1;
    for(auto [l, r] : RC){
        l = max(l, prev+1);
        ans += max(0ll, r-l+1);
        prev = max(prev, r);
    }
    cout << ans << endl;

    return 0;
}
#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...