제출 #1194912

#제출 시각아이디문제언어결과실행 시간메모리
1194912Nurislam이상한 기계 (APIO19_strange_device)C++17
100 / 100
310 ms41332 KiB
#include <bits/stdc++.h>

using namespace std;

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    long long n,a,b;
    cin >> n >> a >> b;
    __int128 lc = a/gcd(a,(b+1));
    lc*=b;
    if(lc>1e18+5){
        lc=1e18+5;
    }
    assert(lc>0);
    //0->(lc-1)
    vector<array<long long,2>>rangs;
    for(int i = 0;i<n;i++){
        long long l,r;
        cin >> l >> r;
        long long lmod = l%lc;
        long long rmod = r%lc;
        long long req = lc-lmod-1;
        if(l+req<=r){
            //lmod-end is to be added.
            rangs.push_back({lmod,lc-1});
        }
        else{
            rangs.push_back({lmod,rmod});
        }
        l+=req+1;
        assert(l%lc==0);
        lmod=l%lc;
        if(l+lc-1<=r){
            rangs.push_back({0,lc-1});
        }
        else if(l<=r){
            rangs.push_back({0,rmod});
        }
    }
    sort(rangs.begin(),rangs.end());
    vector<array<long long,2>>ne;
    ne.push_back(*rangs.begin());
    for(array<long long,2>a:rangs){
        if(ne.back()[1]<a[0]){
            ne.push_back(a);
        }
        else{
            ne.back()[1]=max(ne.back()[1],a[1]);
        }
    }
    long long ans = 0;
    for(array<long long,2>a:ne){
        ans+=a[1]-a[0]+1;
    }
    cout << (long long)ans;
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

strange_device.cpp: In function 'int main()':
strange_device.cpp:26:37: warning: narrowing conversion of '(lc - 1)' from '__int128' to 'long long int' [-Wnarrowing]
   26 |             rangs.push_back({lmod,lc-1});
      |                                   ~~^~
strange_device.cpp:35:34: warning: narrowing conversion of '(lc - 1)' from '__int128' to 'long long int' [-Wnarrowing]
   35 |             rangs.push_back({0,lc-1});
      |                                ~~^~
#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...