Submission #222818

#TimeUsernameProblemLanguageResultExecution timeMemory
222818atoizStrange Device (APIO19_strange_device)C++14
100 / 100
938 ms75900 KiB
/*input
2 16 13
2 5
18 18
*/

#include <iostream>
#include <map>
#include <algorithm>

using namespace std;

const int64_t INF = 2e18;

int main()
{
	ios_base::sync_with_stdio(0); cin.tie(0);
	int N;
	int64_t A, B;
	cin >> N >> A >> B;

	int64_t M = A / __gcd(A, B + 1);
	M = (INF / M < B ? INF : B * M);

	map<int64_t, int> vals;
	while (N--) {
		int64_t L, R;
		cin >> L >> R;
		++R; 

		if (R - L >= M) return cout << M << endl, 0;
		L %= M, R %= M;

		if (L < R) ++vals[L], --vals[R];
		else ++vals[0], --vals[R], ++vals[L], --vals[M];
	}

	int64_t last = 0, cnt = 0;
	int cur = 0;
	for (auto p : vals) {
		cnt += (cur > 0) * (p.first - last);
		last = p.first;
		cur += p.second;
	}
	cout << cnt << endl;
}
#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...