제출 #732986

#제출 시각아이디문제언어결과실행 시간메모리
732986boyliguanhan이상한 기계 (APIO19_strange_device)C++17
15 / 100
1356 ms18184 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
int len;
bool merged[1000100];
struct range {
    int l, r;
    bool operator <(range against) {
        return l < against.l;
    }
};
vector<range> ranges;
int gcd(int a, int b) {
    if(!b)
        return a;
    return gcd(b, a%b);
}
signed main() {
    int n, a, b;
    cin >> n >> a >> b;
    __int128_t temp = b;
    temp*=a/gcd(a, b+1);
    if(temp>1e18)
        len = 2e18;
    else
        len = temp;
    for(int i = 0; i < n; i++) {
        int l, r;
        cin >> l >> r;
        if(r-l+1 >= len) {
            cout << len << '\n';
            return 0;
        }
        l%=len, r%=len;
        if(l > r) {
            ranges.push_back({l, len-1});
            ranges.push_back({0, r});
        } else {
            ranges.push_back({l, r});
        }
    }
    sort(ranges.begin(), ranges.end());
    for(int i = 1; i < ranges.size(); i++) {
        if(ranges[i].l <= ranges[i-1].r)
            ranges[i].l = ranges[i-1].l, merged[i-1] = 1;
    }
    int ans = 0;
    for(int i = 0; i < ranges.size(); i++)
        if(!merged[i])
            ans+=ranges[i].r-ranges[i].l+1;
    cout << ans << '\n';
}

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

strange_device.cpp: In function 'int main()':
strange_device.cpp:43:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<range>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for(int i = 1; i < ranges.size(); i++) {
      |                    ~~^~~~~~~~~~~~~~~
strange_device.cpp:48:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<range>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |     for(int i = 0; i < ranges.size(); i++)
      |                    ~~^~~~~~~~~~~~~~~
#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...