제출 #171603

#제출 시각아이디문제언어결과실행 시간메모리
171603rama_pang이상한 기계 (APIO19_strange_device)C++14
100 / 100
611 ms18316 KiB
#include <bits/stdc++.h>
using namespace std;
using lint = long long;
const lint INF = 1e18 + 100;

int main() {
    int n;
    lint A, B;
    scanf("%d %lld %lld", &n, &A, &B);

    lint g = __gcd(A, B + 1);
    lint t = 0;

    if ((A / g) > (INF / B + 1)) {
        t = INF;
    } else {
        t = (A / g) * B;
    }

    vector<pair<lint, lint>> interval;
    interval.reserve(2 * n);
    
    for (int i = 0; i < n; i++) {
        lint l, r;
        scanf("%lld %lld", &l, &r);

        if (r - l + 1 >= t) {
            interval.emplace_back(0, t - 1);
        } else {
            l %= t, r %= t;
            if (l <= r) {
                interval.emplace_back(l, r);
            } else {
                interval.emplace_back(l, t - 1);
                interval.emplace_back(0, r);
            }
        }
    }

    sort(begin(interval), end(interval));
    lint ans = 0;

    for (int i = 0; i < (int)interval.size(); i++) {
        lint l = interval[i].first;
        lint r = interval[i].second;
        int nxt = i;
        while (nxt + 1 < (int)interval.size() && interval[nxt + 1].first <= r) {
            r = max(r, interval[nxt + 1].second);
            nxt++;
        }
        ans += (r - l + 1);
        i = nxt;
    }

    cout << ans << "\n";
    return 0;
}

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

strange_device.cpp: In function 'int main()':
strange_device.cpp:9:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %lld %lld", &n, &A, &B);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
strange_device.cpp:25:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld %lld", &l, &r);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~
#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...