제출 #1032002

#제출 시각아이디문제언어결과실행 시간메모리
1032002Gangsta이상한 기계 (APIO19_strange_device)C++14
0 / 100
5052 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});
    		}
    		
    		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;
    }
    if(b == 1){
    	sort(v.begin(), v.end());
    	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;
				}
			}
		}
    }
    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...