Submission #212661

#TimeUsernameProblemLanguageResultExecution timeMemory
212661vioalbert이상한 기계 (APIO19_strange_device)C++14
65 / 100
594 ms69812 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll n, a, b;
pair<ll, ll> t[2000005];
stack<pair<ll, ll>> st;

int main() {
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	cin >> n >> a >> b;
	ll g = __gcd(a,b+1);
	ll k = a/g;
	ll tlimit = k * b;

	int idx = 0;
	for(int i = 0; i < n; i++) {
		ll l, r; cin >> l >> r;
		l %= tlimit; r %= tlimit;
		if(l > r) {
			t[idx++] = {l, tlimit-1};
			t[idx++] = {0, r};
		} else {
			t[idx++] = {l, r};
		}
	}
	sort(t, t+idx);

	st.push(t[0]);
	for(int i = 1; i < idx; i++) {
		if(st.top().second < t[i].first)
			st.push(t[i]);
		else if(st.top().second < t[i].second)
			st.top().second = t[i].second; 
	}

	ll ans = 0;
	while(!st.empty()) {
		ans += 1ll * (st.top().second - st.top().first + 1);
		st.pop();
	}

	cout << ans << '\n';

	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...