Submission #1032751

#TimeUsernameProblemLanguageResultExecution timeMemory
1032751GangstaStrange Device (APIO19_strange_device)C++14
0 / 100
5061 ms524288 KiB
#include "bits/stdc++.h"
#define ll long long int
#define pb push_back
#define pii pair<ll,ll>
#define ff first
#define ss second
#define sz size()

const int N = 2e5 + 1;

using namespace std;

ll n, a, b, ans = 0;

set <pii> s;

vector <pii> v;

int main(){
    cin >> n >> a >> b;
    for(int i = 1; i <= n; i++){
    	ll x, y;
    	cin >> x >> y;
    	if(b == 1){
    		if(y - x + 1 >= a) return cout << a,0;
    		ll san = (2*x) % a, san1 = (2*y) % a;
    		if(san <= san1){
    			v.pb({san,0});
    			v.pb({san1,1});
    		} 
    		else{
    			v.pb({0,0});
    			v.pb({san1,1});
    			v.pb({san,0});
    			v.pb({a-1,1});
    		}
    	}
    	else{
	    	for(ll j = x; j <= y; j++){
	    		ll san = j + j/b;
	    		san %= a;
	    		int san1 = j % b;
	    		s.insert({san,san1});
	    	}
	    	ans = (int)s.sz;
	    }
    }
    if(b == 1){
    	sort(v.begin(), v.end());
    	ll ac = 0, bas = 1e18;
		for(auto i: v){
			if(i.ss == 0){
				ac++;
				bas = min(bas,i.ff);
			}
			else{
				ac--;
				if(ac == 0){
					ans += i.ff - bas + 1;
					bas = 1e18;
				}
			}
		}
    }
    cout << ans;
}
#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...