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

题目描述

有一个长度为 n 的排列 p,其中有 m 对敌人(a_i,b_i)()。 你的任务是对不同的区间 [x, y] 计数(1≤x≤y≤n),它们不包含任何敌人对。因此,包含至少一个敌人对的区间 [x, y] 不会被计数进来(敌人对的位置和值的顺序并不重要)。 例如:p =(1, 3, 2, 4),有敌人对 {(3, 2), (4, 2)}。区间 [1, 3] 是不正确的,因为它包含一个敌人对 (3, 2)。区间 [1, 4] 也是不正确的,因为它包含两个敌人对 (3, 2) 和 (4, 2)。但是区间 [1, 2] 是正确的,因为它不包含任何敌人对,正确的计数才被统计。

输入描述:

第一行包含两个正整数 n、m,分别表示排列的长度和敌人对的数目;第二行给出排列具体的n 个数;第 3~3 + m 行,每行给出一个数对。
(1 ≤ n,m ≤ 1e6)

输出描述:

不包含任意敌人对的区间个数。
示例1

输入

复制
4 2
1 3 2 4
3 2
2 4

输出

复制
5