Submission #497796

#TimeUsernameProblemLanguageResultExecution timeMemory
497796MilosMilutinovicStrange Device (APIO19_strange_device)C++14
100 / 100
643 ms86224 KiB
#include <bits/stdc++.h>

using namespace std;

using ll = long long;

int n;
ll A, B;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout << fixed << setprecision(11);
	cerr << fixed << setprecision(6);

	cin >> n >> A >> B;
	A /= __gcd(A, B + 1);
	ll mod = 1e18 + 1;
	if (A <= (LLONG_MAX / 2) / B) mod = A * B;
	vector<pair<ll, ll>> vec;
	for (int i = 0; i < n; ++i) {
		ll l, r;
		cin >> l >> r;
		ll len = r - l + 1;
		if (len >= mod) {
			cout << mod << "\n";
			return 0;
		}
		l = l % mod;
		r = r % mod;
		if (l <= r) {
			vec.push_back({l, r});
		} else {
			vec.push_back({l, mod - 1});
			vec.push_back({0, r});
		}
	}

	vector<pair<ll, int>> Events;
	for (int i = 0; i < vec.size(); ++i) {
		Events.push_back({vec[i].first, 0});
		Events.push_back({vec[i].second, 1});
	}

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

	int bal = 0;
	ll left = 0, tot = 0;
	for (auto ev : Events) {
		if (ev.second == 0) {
			bal++;
			if (bal == 1) left = ev.first;
		} else {
			bal--;
			if (bal == 0) tot += ev.first - left + 1;
		}
	}
	cout << tot << "\n";
}

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:40:20: 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]
   40 |  for (int i = 0; i < vec.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...