제출 #835368

#제출 시각아이디문제언어결과실행 시간메모리
835368dimashhh이상한 기계 (APIO19_strange_device)C++17
100 / 100
386 ms69752 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int N = 1e6 + 1,MOD = 1e9 + 7;

ll n,l[N],r[N],a,b,ans;
__int128_t A,B,cyc,inf;
vector<pair<ll,ll>> all;
void test(){
    cin >> n >> a >> b;
    A = a;
    B = b;
    for(int i = 1;i <= n;i++){
        cin >> l[i] >> r[i];
    }
    if(n == 1){
          ll x = a / gcd(a,b + 1),val = r[1] - l[1] + 1;
          if(x >= (val + b - 1) / val){
              cout << (x % MOD * (b % MOD)) % MOD;
              return;
          }
          cout << val % MOD;
          return;
      }
    cyc = A * B / (gcd(a,b + 1));
    inf = r[n];
    
    ll _ = a * b / (gcd(a,b + 1));
    for(int i = 1;i <= n;i++){
        l[i] %= _;
        r[i] %= _;
        // cout << l[i] << ' ' << r[i] << '\n';
        if(r[i] >= l[i]){
            all.push_back({l[i],r[i]});
            continue;
        }
        all.push_back({0,r[i]});
        all.push_back({l[i],_ - 1});
    }
    ll ans = 0;
    sort(all.begin(),all.end());
    // for(auto [x,y]:all){
    //     cout << x << ' ' << y << '\n';
    // }
    // cout << '\n';
    for(int i = 0;i < all.size();i++){
        ll mx = all[i].second,_l = all[i].first;
        for(int j = i + 1;j < all.size();j++){
            if(mx >= all[j].first){
                i = j;
                mx = max(mx,all[j].second);
            }else break;
        }
        // cout << _l << ' ' << mx << ' ' << i << '\n';
        ans += (mx - _l + 1) ;
    }
    cout << ans;
}
int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int T = 1;
    //cin >> T;
    while(T--) test();
}

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

strange_device.cpp: In function 'void test()':
strange_device.cpp:48:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |     for(int i = 0;i < all.size();i++){
      |                   ~~^~~~~~~~~~~~
strange_device.cpp:50:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |         for(int j = i + 1;j < all.size();j++){
      |                           ~~^~~~~~~~~~~~
#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...