Submission #1031954

#TimeUsernameProblemLanguageResultExecution timeMemory
1031954GangstaStrange Device (APIO19_strange_device)C++14
0 / 100
5087 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,1});
    			v.pb({san1,0});
    		} 
    		else{
    			v.pb({0,1});
    			v.pb({san1,0});
    			v.pb({san,1});
    			v.pb({a-1,0});
    		}
    		ll ac = 0, bas = 1e18;
    		for(auto i: v){
    			if(i.ss == 1){
    				ac++;
    				bas = min(bas,i.ff);
    			}
    			else{
    				ac--;
    				if(ac == 0){
    					ans += i.ff - bas + 1;
    					bas = 1e18;
    				}
    			}
    		}
    		continue;
    	}
    	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;
    }
    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...