제출 #1367274

#제출 시각아이디문제언어결과실행 시간메모리
1367274thewizardman이상한 기계 (APIO19_strange_device)C++20
100 / 100
308 ms33412 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using lll = __int128_t;

ll n, a, b, ans;
lll x, md;
vector<pair<lll, lll>> v;

int main() {
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  cin >> n >> a >> b;
  x = a/__gcd(a, b+1);
  md = x * (lll)b;
  md %= (lll)(1e19);
  while (n--) {
    cin >> a >> b;
    if (b - a + 1 >= md) v.push_back({0, md-1});
    else {
      a %= md;
      b %= md;
      if (a <= b) v.push_back({a, b});
      else v.push_back({a, md-1}), v.push_back({0, b});
    }
  }
  sort(v.begin(), v.end());
  lll last = -1;
  for (auto [l, r]: v) {
    l = max(l, last+1);
    if (r >= l) ans += r-l+1;
    last = max(r, last);
  }
  cout << ans << '\n';
  // for (int a = 1; a <= 4; a++) for (int b = 1; b <= 4; b++) {
  //   cout << a << ' ' << b << "\n";
  //   map<pair<int, int>, int> mp;
  //   for (int i = 0; i < a*b; i++) {
  //     if (mp.count({(i+(i/b))%a, i%b})) cout << mp[{(i+(i/b))%a, i%b}] << ' ' << i << ' ';
  //     mp[{(i+(i/b))%a, i%b}] = i;
  //     // cout << (i+(i/b))%a << ' ' << i%b << '\n';
  //   }
  //   cout << "\n\n";
  // }
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…