区间翻转
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有一个长度为 n 的序列 a_1, a_2, \cdots, a_n,初始时第 k 个位置的元素 a_k = 1,其他位置均为 0。小S会对这个序列依次进行 m 次区间翻转操作,每次操作定义如下:对于第 i 次区间翻转操作,小S会给出翻转的左右端点 l_ir_i,表示将序列的第 l_i 个元素到第 r_i 个元素(含两端)这段子序列颠倒顺序。您需要求出经过这 m 次区间翻转操作后,序列中唯一的元素 1 所在的位置。

输入描述:

第一行两个整数 nk1 \le k \le n \le 10^9),分别表示序列的长度和初始时元素 1 的位置。
第二行一个整数 m1 \le m \le 2 \times 10^5),表示区间翻转操作的数量。
接下来 m 行,每行两个整数 l_ir_i1 \le l_i \le r_i \le n),分别表示第 i 次区间翻转操作的左右端点。

输出描述:

一行一个整数,表示经过这 m 次区间翻转操作后,序列中唯一的元素 1 所在的位置。
示例1

输入

复制
5 3
2
2 5
1 3

输出

复制
4

说明

初始时序列为 [0, 0, 1, 0, 0]
第一次操作后序列为 [0, 0, 0, 1, 0]
第二次操作后序列为 [0, 0, 0, 1, 0]
最终序列中唯一的元素 1 在第 4 个位置上,所以答案为 4