CF134C.Swaps

提高+/省选-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There are n players sitting at a round table. All of them have s cards of n colors in total. Besides, initially the first person had cards of only the first color, the second one had cards of only the second color and so on. They can swap the cards by the following rules:

  • as the players swap, a player can give a card of his color only;
  • a player can't accept a card of a color he already has (particularly, he can't take cards of his color, no matter whether he has given out all of them or not);
  • during one swap a pair of people swaps cards (each person gives one card and takes one card).

The aim of all n people is as follows: each of them should give out all the cards he had initially (that is, all cards of his color). Your task is to denote whether such sequence of swaps is possible. If the answer is positive, you should list all the swaps.

有 nn 名玩家围坐在一张圆桌旁。他们一共有 ss 张卡片,这些卡片共有 nn 种颜色。此外,初始时第一个人手中只有第一种颜色的卡片,第二个人只有第二种颜色的卡片,依此类推。他们可以按照以下规则交换卡片:

  • 在交换过程中,一名玩家只能给出属于自己颜色的卡片;
  • 一名玩家不能接收自己已拥有的颜色的卡片(特别地,他不能接收自己颜色的卡片,无论他是否已将该颜色的所有卡片都给出);
  • 每次交换发生在一对玩家之间(每人给出一张卡片,并接收一张卡片)。

所有 nn 名玩家的目标是:每个人都将其最初拥有的全部卡片(即其自身颜色的所有卡片)全部给出。你的任务是判断是否存在满足该目标的交换序列;若存在,请列出所有的交换操作。

输入格式

The first line contains integers n (1 ≤ n ≤ 200000) and s (1 ≤ s ≤ 200000). The second line contains n numbers, the i-th number stands for how many cards the i-th player has by the moment the game starts. It is possible that a player has no cards initially.

第一行包含两个整数 nn(1≤n≤2000001 \leq n \leq 200000)和 ss(1≤s≤2000001 \leq s \leq 200000)。第二行包含 nn 个数字,其中第 ii 个数字表示游戏开始时第 ii 位玩家所拥有的卡片数量。初始时某位玩家可能没有卡片。

输出格式

On the first line print "No" if such sequence of swaps is impossible. Otherwise, print "Yes". If the answer is positive, next print number k — the number of the swaps. Then on k lines describe the swaps by pairs of indices of the swapping players. Print the swaps and the numbers of the swaps in any order.

若不存在满足条件的交换序列,则在第一行输出“No”。否则,输出“Yes”。若答案为肯定,则接下来输出交换次数 kk;随后在 kk 行中,每行用一对玩家的下标描述一次交换。交换的顺序以及交换编号的顺序可任意。

输入输出样例

  • 输入#1

    4 8
    2 2 2 2

    输出#1

    Yes
    4
    4 3
    4 2
    1 3
    1 2
  • 输入#2

    6 12
    1 1 2 2 3 3

    输出#2

    Yes
    6
    6 5
    6 4
    6 3
    5 4
    5 3
    2 1
  • 输入#3

    5 5
    0 0 0 0 5

    输出#3

    No

输入解题思路,AI测评打分。不知道怎么写?

首页