Official

B - 会議室の空き時間 / Available Time Slots for Meeting Rooms Editorial by kyopro_friends Editorial for printing


\([L,R]\cap[l,r]=[\max(L,l),\min(R,r)]\) となります。ただし、\(x>y\) のとき \([x,y]\) は空集合を表すものとします。\([x,y]\) の要素数は \(x>y\) のとき \(0\)、そうでないとき \(y-x+1\) となります。よって、現在の利用可能時刻の区間を保持・更新することでこの問題を解くことができます。

実装例 (C++)

#include<bits/stdc++.h>
using namespace std;

int main(){
  int L, R;
  cin >> L >> R;
  int n;
  cin >> n;

  for(int i=0; i<n; i++){
    int l, r;
    cin >> l >> r;
    L = max(L, l);
    R = min(R, r);
    if(L > R){
      cout << 0 << endl;
    }else{
      cout << R-L+1 << endl;
    }
  }
}

実装例 (Python)

L, R = map(int, input().split())
N = int(input())

for _ in range(N):
  l, r = map(int, input().split())
  L = max(L, l)
  R = min(R, r)
  if L > R:
    print(0)
  else:
    print(R-L+1)

posted:
last update: