Problem:
Score : 500 points

Problem Statement

There are N integers X_1, X_2, \cdots, X_N, and we know that A_i \leq X_i \leq B_i.
Find the number of different values that the median of X_1, X_2, \cdots, X_N can take.

Notes

The median of X_1, X_2, \cdots, X_N is defined as follows. Let x_1, x_2, \cdots, x_N be the result of sorting X_1, X_2, \cdots, X_N in ascending order.

If N is odd, the median is x_{(N+1)/2};

if N is even, the median is (x_{N/2} + x_{N/2+1}) / 2.

Constraints

2 \leq N \leq 2 \times 10^5

1 \leq A_i \leq B_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 B_1
A_2 B_2
:
A_N B_N

Output

Print the answer.

Sample Input 1

2
1 2
2 3

Sample Output 1

3

If X_1 = 1 and X_2 = 2, the median is \frac{3}{2};

if X_1 = 1 and X_2 = 3, the median is 2;

if X_1 = 2 and X_2 = 2, the median is 2;

if X_1 = 2 and X_2 = 3, the median is \frac{5}{2}.

Thus, the median can take three values: \frac{3}{2}, 2, and \frac{5}{2}.

Sample Input 2

3
100 100
10 10000
1 1000000000

Sample Output 2

9991

Solution in JavaScript (Node.js 12.16.1) (judge verdict: Wrong Answer)

'use strict';
function Main(input){
  const values = input.split('\n');
  const N = Number(values.shift().trim());
  const ABs = values.map((line) => {
    var row = line.trim().split(' ');
    return row.map((str) => Number(str));
  });
  let result = 0;
  let mins = [], maxs = [];
  
  for(let i = 0; i < N; i++){
    mins.push(ABs[i][0]);
    maxs.push(ABs[i][1]);
  }
  mins = mins.sort();
  maxs = maxs.sort();

  let median_min = 0, median_max = 0;
  if(N%2 === 0){
    median_min = (mins[N/2-1]+mins[N/2])/2;
    median_max = (maxs[N/2-1]+maxs[N/2])/2;
    result = (median_max-median_min)/0.5 + 1;
  } else {
    let idx = (N+1)/2-1;
    median_min = mins[idx];
    median_max = maxs[idx];
    result = (median_max-median_min) + 1;
  }
  console.log(result);
}

// 固定
Main(require("fs").readFileSync("/dev/stdin", "utf8"));