Submission #568805

#TimeUsernameProblemLanguageResultExecution timeMemory
568805HappyPacManStrange Device (APIO19_strange_device)C++14
100 / 100
485 ms42076 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf = 1e18;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int n;
	ll A,B;
	cin >> n >> A >> B;
	__int128_t LC = (__int128_t)1*A/__gcd(A,B+1)*B;
	ll sum = 0;
	vector<pair<ll,ll> > range;
	for(int i=0;i<n;i++){
		ll li,ri;
		cin >> li >> ri;
		sum += ri-li+1;
		range.emplace_back(li,ri);
	}
	if(LC > (__int128_t)inf){
		cout << sum << '\n';
		return 0;
	}
	ll LCM = A/__gcd(A,B+1)*B;
	vector<pair<ll,ll> > addi;
	for(auto [li,ri] : range){
		if(ri/LCM-li/LCM > 1){
			addi.emplace_back(0,LCM-1);
		}else if(ri/LCM-li/LCM == 1){
			addi.emplace_back(li%LCM,LCM-1);
			addi.emplace_back(0,ri%LCM);
		}else{
			addi.emplace_back(li%LCM,ri%LCM);
		}
	}
	ll last = -1, tot = 0;
	sort(addi.begin(),addi.end());
	for(auto [li,ri] : addi){
		tot += max(0ll,ri-max(last+1,li)+1);
		last = max(last,ri);
	}
	cout << tot << '\n';
}

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:28:11: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   28 |  for(auto [li,ri] : range){
      |           ^
strange_device.cpp:40:11: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   40 |  for(auto [li,ri] : addi){
      |           ^
#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...