#1257. 解锁任务

解锁任务

【题目描述】

Fife 正在玩一个游戏。游戏一共有 n 个任务,目标是完成第 n 个任务。每当你完成了 某个任务,就可以解锁一些后面的任务中任意一个(但只能解锁一个)。一开始只有 1 号任务可以完成。只有已经解锁了的任务才能完成。

每个任务都有一个难度值。为了减小极端数据的影响,最后游戏的得分就是所有 Fife完成的任务难度值的中位数。(如果完成了奇数个任务,中位数就是难度值排序后正中间的那个数;否则是中间的两个数中较大的那个)

Fife 已经事先知道了每个任务的难度值,以及任务之间的依赖关系,希望最后的得分尽量大。

【输入格式】

第 1 行输入两个正整数 n,m,表示任务个数和任务的依赖关系数。 第 2 行输入 n 个由空格隔开的整数 A[i],即第 i 个任务的难度值。 接下来 m 行,每行输入两个整数 x, y,表示完成第 x 个任务后就可以选择解锁第 y 个任务。

【输出格式】

输出一行一个正整数表示最大可能的得分。

【样例输入】

5 5
1 2 3 4 5
1 2
2 3
3 5
2 4
4 5

【样例输出】

4

【样例解释】

方案如下:依次完成任务 1,任务 2,任务 4,任务 5,难度值为{1,2,4,5},中位数为 4。

【数据范围】

30% 的数据 :n≤8, m≤20

50% 的数据 :n≤40, m≤200

另外 20% 的数据完成第 i 个任务后只能解锁第 i+1 个任务

100% 的数据:n≤10,000, m≤100,000, 0≤A[i]≤1,000,000,000