Submission #1172454

#TimeUsernameProblemLanguageResultExecution timeMemory
1172454fryingducStrange Device (APIO19_strange_device)C++20
100 / 100
585 ms63132 KiB
#include "bits/stdc++.h"

using namespace std;

#ifdef duc_debug
#include "bits/debug.h"
#else
#define debug(...)
#endif

const int maxn = 1e6 + 6;
const long long inf = 1e18;
int n;
long long a, b;

void solve() {
  cin >> n >> a >> b;
  long long d = __gcd(b + 1, a);
  if (inf / b < a / d) {
    long long res = 0;
    for (int i = 1; i <= n; ++i) {
      long long l, r; cin >> l >> r;
      res += (r - l + 1);
    }
    cout << res;
    return;
  }
  long long g = (a / d) * b;
//  debug(g);
  map<long long, int> mp;
  for (int i = 1; i <= n; ++i) {
    long long l, r; cin >> l >> r;
    if (r - l >= g) {
      cout << g << '\n';
      return;
    }
    l %= g, r %= g;
    ++mp[l], --mp[r + 1];
    if (l > r) {
      ++mp[0];
      --mp[g];
    }
  }
  long long res = 0;
  long long prv = 0;
  long long cur = 0;
  for (auto [x, y] : mp) {
    if (cur == 0) {
      res += x - prv;
    }
    cur += y;
    if (cur == 0) {
      prv = x;
    }
  }
  res += (g - prv);
  cout << g - res;
}

signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);

  solve();

  return 0;
}


#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...