제출 #977060

#제출 시각아이디문제언어결과실행 시간메모리
977060dubabuba이상한 기계 (APIO19_strange_device)C++14
10 / 100
1252 ms63032 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;
	cin >> n >> a >> b;
	int t = a / gcd(a, b + 1) * b;
	// tree *root = new tree(0, t - 1);
	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...