제출 #933716

#제출 시각아이디문제언어결과실행 시간메모리
933716irmuun이상한 기계 (APIO19_strange_device)C++17
20 / 100
233 ms56904 KiB
#include<bits/stdc++.h>
 
using namespace std;
 
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll n,a,b;
    cin>>n>>a>>b;
    ll l[n+5],r[n+5];
    ll g=a/gcd((b+1)%a,a),MX=1e18+1;
    if(MX/b>=g){
        g=g*b;
    }
    else{
        g=MX;
    }
    ll S=0;
    for(ll i=1;i<=n;i++){
        cin>>l[i]>>r[i];
        S+=r[i]-l[i]+1;
    }
    if(n==1){
        cout<<min(r[1]-l[1]+1,g);
        return 0;
    }
    if(S<=1000000){
        set<pair<ll,ll>>st;
        for(ll i=1;i<=n;i++){
            for(ll t=l[i];t<=r[i];t++){
                st.insert({(t+t/b)%a,t%b});
            }
        }
        cout<<st.size();
        return 0;
    }
    if(g<=1000000){
        vector<ll>add(g,0),sub(g,0);
        for(ll i=1;i<=n;i++){
            if(r[i]-l[i]+1>=g){
                cout<<g;
                return 0;
            }
            ll L=l[i]%g,R=r[i]%g;
            if(L<=R){
                add[L]++;
                sub[R]++;
            }
            else{
                add[L]++;
                sub[g-1]--;
                add[0]++;
                sub[R]--;
            }
        }
        ll cur=0,ans=0;
        for(ll i=0;i<g;i++){
            cur+=add[i];
            if(cur>0) ans++;
            cur-=sub[i];
        }
        cout<<ans;
        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...