Submission #977068

#TimeUsernameProblemLanguageResultExecution timeMemory
977068dubabubaStrange Device (APIO19_strange_device)C++14
10 / 100
1207 ms63260 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
typedef pair<int, int> pii;
#define ff first
#define ss second
#define MP make_pair
 
int gcd(int a, int b) {
	if(a == 0) return b;
	if(b == 0) return a;
	return gcd(b % a, a);
}
 
signed main() {
	int a, b, n, t;
	cin >> n >> a >> b;
	int d = gcd(a, b + 1);
	double sda = 1.0  * a / d * b;
	if(sda <= 1e18) t = a / d * b;
	else t = a / d * b;
	set<pii> v;
 
	int l, r; bool gay = false;
	for(int i = 0; i < n; i++) {
		cin >> l >> r;
		if(r - l + 1 >= t) {
			gay = 1;
			continue;
		}
 
		l %= t;
		r %= t;
 
		if(l <= r) {
			// root->upt(l, r);
			v.insert(MP(l, r));
		}
		else {
			// root->upt(l, t - 1);
			// root->upt(0, r);
			v.insert(MP(l, t - 1));
			v.insert(MP(0, r));
		}
	}
 
	if(gay) {
		cout << t << endl;
		return 0;
	}
 
	int ans = 0;
	l = 0, r = 0;
	for(pii p : v) {
		// cout << p.ff << ' ' << p.ss << endl;
		if(r < p.ff) {
			// cout << " + " << r - l + 1 << endl;
			ans += (r - l + 1);
			l = p.ff;
		}
		r = max(r, p.ss);
	}
 
	ans += (r - l + 1);
	cout << ans << endl;
	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...