Submission #721884

#TimeUsernameProblemLanguageResultExecution timeMemory
721884LittleCubeStrange Device (APIO19_strange_device)C++17
100 / 100
776 ms63460 KiB
#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int, int>
#define pll pair<ll, ll>
#define F first
#define S second
using namespace std;

ll N, A, B;
map<ll, int> mp;

ll safe_mul(ll a, ll b)
{
	if(b >= 2e18 / a)
		return 2e18;
	return a * b;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> N >> A >> B;
	ll g = __gcd(A, B + 1);
	A /= g;
	A = safe_mul(A, B);
	for (int i = 1; i <= N; i++)
	{
		ll l, r;
		cin >> l >> r;
		if(r - l + 1 >= A)
		{
			cout << A << '\n';
			return 0;
		}
		l %= A, r %= A;
		if(r < l)
		{
			mp[l]++;
			mp[A]--;
			mp[0]++;
			mp[r + 1]--;
		}
		else
		{
			mp[l]++;
			mp[r + 1]--;
		}
	}
	ll last = 0, cnt = 0, ans = 0;
	for (auto [p, v] : mp)
	{
		if(cnt > 0)
			ans += p - last;
		last = p;
		cnt += v;
	}
	cout << ans << '\n';
}
#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...