Submission #677268

#TimeUsernameProblemLanguageResultExecution timeMemory
677268amirhoseinfar1385Strange Device (APIO19_strange_device)C++17
100 / 100
948 ms65024 KiB
#include<bits/stdc++.h>
using namespace std;
long long inf=1e18+10;

long long mul(long long a,long long b){
	if(inf/a<b){
		return inf;
	}
	else{
		long long ret=1ll*a*b;
		return ret;
	}
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	long long n;
	long long a,b;
	cin>>n>>a>>b;
	long long e=mul(a/gcd(a,(b+1)),b);
	map<long long ,long long>mp;
	for(int i=0;i<n;i++){
		long long l,r;
		cin>>l>>r;
		if(r-l+1>=e){
			cout<<e<<"\n";
			return 0;
		}
		l%=e;
		r%=e;
	//	cout<<l<<" "<<r<<endl;
		mp[l]++;
		if(l>r){
			mp[e]--;
			mp[0]++;
		}
		mp[r+1]--;
	}
	long long last=0;
	for(auto x:mp){
		mp[x.first]+=last;
		last=mp[x.first];
	}
	long long res=0;
	long long ll=0,rr=0,f=0;
	for(auto x:mp){
		rr=x.first;
		if(x.second==0){
	//	    cout<<rr<<" "<<ll<<" "<<x.first<<endl;
			res+=rr-ll;
			ll=rr;
			f=0;
		}
		else{
			if(f==0){
				ll=x.first;
				f=1;
			}
		}
	}
	cout<<res<<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...