Submission #243702

#TimeUsernameProblemLanguageResultExecution timeMemory
243702neihcr7jStrange Device (APIO19_strange_device)C++14
100 / 100
899 ms69016 KiB
#include<bits/stdc++.h>

#define maxn 100005

using namespace std;
typedef long long ll;

ll n, a, b;
ll ret;

int main(){
  #define TASK "ABC"
//  freopen(TASK".inp", "r", stdin); freopen(TASK".out", "w", stdout);
  ios_base::sync_with_stdio(0);

  cin >> n >> a >> b;

  ret = __gcd(a, b + 1);
  ret = a / ret;

  if (sqrt(ret) * sqrt(b) > 1e9) {
    ll ans = 0;
    for (int i = 0; i < n; ++i) {
      ll l, r;
      cin >> l >> r;
      ans += r + 1;
      ans -= l;
    }

    cout << ans;
    return 0;
  }

  ret *= b;

  vector < pair < ll, int > > q;

  for (int i = 0; i < n; ++i) {
    ll l, r;
    cin >> l >> r;

    if (r - l + 1 >= ret) {
      cout << ret;
      return 0;
    }

    l %= ret; r %= ret;

    if (l <= r) {
      q.push_back({l, 1});
      q.push_back({r + 1, -1});
    }
    else {
      q.push_back({0, 1});
      q.push_back({r + 1, -1});

      q.push_back({l, 1});
      q.push_back({ret, -1});
    }
  }

  sort(q.begin(), q.end());

  ll ans = 0, cnt = 0;
  for (int i = 0; i + 1 < q.size(); ++i) {
    cnt += q[i].second;
    if (cnt)
      ans += q[i + 1].first - q[i].first;
  }

  cout << ans;

  return 0;
}

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:65:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i + 1 < q.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...