제출 #1181932

#제출 시각아이디문제언어결과실행 시간메모리
1181932epicci23이상한 기계 (APIO19_strange_device)C++20
65 / 100
539 ms78772 KiB
#include "bits/stdc++.h"
#define int __int128
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;

void _(){
  long long _n, _a, _b;
  cin >> _n >> _a >> _b;
  
  int n = _n, a = _a, b = _b;
  int rep = (a  / __gcd(a, b + 1)) * b;

  vector<int> Zip, Add;

  Zip.push_back(0);
  Zip.push_back(rep - 1);
  Zip.push_back(rep);

  vector<array<int, 2>> V;

  for(int i = 1; i <= n; i++){
  	long long _l, _r;
  	cin >> _l >> _r;
    int l = _l, r = _r;
  	int gl = l % rep;
  	int gr = r % rep;
  	V.push_back({gl, gr});
    Zip.push_back(gl);
    Zip.push_back(gr + 1);
  }

  sort(all(Zip));
  Zip.erase(unique(all(Zip)), Zip.end());
  
  int m = sz(Zip);
  Add.assign(m, 0);

  for(array<int,2> X : V){
    int pl = lower_bound(all(Zip), X[0]) - Zip.begin();
    int pr = lower_bound(all(Zip), X[1] + 1) - Zip.begin();
    
    Add[pl]++;
    Add[pr]--;
    if(pl > pr) Add[0]++; 
  }

  int ans = 0, cur = 0;

  for(int i = 0; i + 1 < m; i++){
    cur += Add[i];
    if(i + 1 < m && cur > 0) ans += Zip[i + 1] - Zip[i];
  }

  cout << (long long) ans << '\n';
}

int32_t main(){
  cin.tie(0); ios::sync_with_stdio(0);
  int tc=1;//cin >> tc;
  while(tc--) _();
  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...