제출 #233403

#제출 시각아이디문제언어결과실행 시간메모리
233403priyansh5525이상한 기계 (APIO19_strange_device)C++17
100 / 100
623 ms60016 KiB
#include<bits/stdc++.h>
	using namespace std;
	#define ll long long int
	#define pii pair<long long int,long long int>
	#define vi vector<long long int >
	#define vvi vector<vector< long long int>>
	#define MP make_pair
	#define PB push_back 
	#define pb pop_back
	#define PF push_front
	#define pf pop_front
	#define MOD 1000000007

	int main()
	{
		ios_base::sync_with_stdio(false);
		cin.tie(NULL);
		ll n,a,b;
		vector<pii> vec;
		cin>>n>>a>>b;
		for(ll i=0;i<n;i++)
		{
			ll x,y;
			cin>>x>>y;
			vec.PB(MP(x,y));
		}
		// solve equation t2 = x*fac+t1
		ll fac = a/__gcd(a,b+1);
		fac*=b;
		if(fac<=0)
			fac=1e18+1;
		ll ans=0;
		vector<pii> ve;
		for(ll i=0;i<n;i++)
		{
			ll x=vec[i].first,y=vec[i].second;
			if(y-x+1>=fac)
			{
				ans=fac;
				break;
			}
			if((x%fac)<=(y%fac))
			{
				ve.PB(MP(x%fac,y%fac));
			}
			else
			{
				ve.PB(MP(x%fac,fac-1));
				ve.PB(MP(0,y%fac));
			}
		}
		if(ans==0)
		{
		sort(ve.begin(),ve.end());
		ll k=ve.size();
		for(ll i=0;i<k;i++)
		{
			ll x=ve[i].first,y=ve[i].second;
			ll j=i+1;
			//cout<<x<<" "<<y<<endl;
			while(j<k && ve[j].first<=(y+1))
			{
				y=max(ve[j].second,y);
				//cout<<x<<" "<<y<<endl;
				j++;
			}
			ans+= (y-x+1);
			i=j-1;
		}
	 	}
	 	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...