제출 #1175271

#제출 시각아이디문제언어결과실행 시간메모리
1175271tkm_algorithmsStrange Device (APIO19_strange_device)C++20
100 / 100
313 ms16980 KiB
/**
*    In the name of Allah
*    We are nothing and you're everything
*    author: najmuddin
**/
#include <bits/stdc++.h>
using namespace std;
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
#define int ll
const char nl = '\n';
const int inf = 1e18+1;

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int n, A, B;
	cin >> n >> A >> B;
	
	int T = inf;
	// A/gcd(A, B+1)*B
	if (B <= inf/(A/__gcd(A, B+1)))T = A/__gcd(A, B+1)*B;
	
	vector<pair<int, int>> v;
	for (int i = 0; i < n; ++i) {
		int l, r; cin >> l >> r;
		
		if (r-l+1 >= T) {
			return cout << T, 0;
		}
		
		l %= T, r %= T;
		if (l <= r)v.push_back({l, r});
		else {
			v.push_back({l, T-1});
			v.push_back({0, r});
		}
	}
	
	sort(all(v));
	int l = v[0].first, r = v[0].second;
	int ans = 0;
	for (int i = 1; i < sz(v); ++i) {
		if (v[i].first > r) {
			ans += r-l+1;
			l = v[i].first;
		}
		
		r = max(r, v[i].second);
	}
	
	ans += r-l+1;
	cout << ans;
	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...