제출 #723156

#제출 시각아이디문제언어결과실행 시간메모리
723156nicky4321Strange Device (APIO19_strange_device)C++17
100 / 100
919 ms115888 KiB
#include <bits/stdc++.h>
#include <numeric>
#define ll long long
#define ld long double
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pdd pair<double, double>
#define vi vector<int>
#define vl vector<ll>
#define ALL(x) x.begin(), x.end()
#define SZ(x) (int)x.size()
#define CASE int t;cin>>t;for(int ca=1;ca<=t;ca++)
#define IOS ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int MAX = 1 << 20, MOD = 1e9 + 7;
ll l[MAX], r[MAX];

void solve(){
    ll n, a, b;
    cin >> n >> a >> b;
    for(int i = 1;i <= n;i++){
        cin >> l[i] >> r[i];
    }
    ll g = __gcd(a, b + 1);
    ll mod;
    if((__int128_t)a * b / g >= 2e18)
        mod = 2e18;
    else
        mod = a * b / g;
    map<ll, int> mp;
    for(int i = 1;i <= n;i++){
        if(r[i] - l[i] + 1 >= mod){
            cout << mod << '\n';
            return;
        }
        l[i] %= mod;
        r[i] %= mod;
        if(l[i] <= r[i]){
            mp[l[i]]++;
            mp[r[i] + 1]--;
        }else{
            mp[0]++;
            mp[r[i] + 1]--;
            mp[l[i]]++;
            mp[mod]--;
        }
    }
    ll lt = 0, now = 0, ans = 0;
    for(auto i : mp){
        if(now > 0)
            ans += i.F - lt;
        now += i.S;
        lt = i.F;
    }
    cout << ans << '\n';
}

int main(){
    IOS
    solve();
    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...