CF746E.Numbers Exchange
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Eugeny has n cards, each of them has exactly one integer written on it. Eugeny wants to exchange some cards with Nikolay so that the number of even integers on his cards would equal the number of odd integers, and that all these numbers would be distinct.
Nikolay has m cards, distinct numbers from 1 to m are written on them, one per card. It means that Nikolay has exactly one card with number 1, exactly one card with number 2 and so on.
A single exchange is a process in which Eugeny gives one card to Nikolay and takes another one from those Nikolay has. Your task is to find the minimum number of card exchanges and determine which cards Eugeny should exchange.
尤金尼有 n 张卡片,每张卡片上恰好写有一个整数。尤金尼希望与尼古拉交换若干张卡片,使得他手中偶数的个数等于奇数的个数,且所有这些数字互不相同。
尼古拉有 m 张卡片,上面分别写着从 1 到 m 的互不相同的整数(每张卡片上一个数)。也就是说,尼古拉恰好有一张写有数字 1 的卡片、一张写有数字 2 的卡片,依此类推。
一次交换是指:尤金尼给尼古拉一张自己的卡片,并从尼古拉现有的卡片中取走一张。你的任务是求出所需的最少交换次数,并确定尤金尼应交换哪些卡片。
输入格式
The first line contains two integers n and m (2 ≤ n ≤ 2·105, 1 ≤ m ≤ 109) — the number of cards Eugeny has and the number of cards Nikolay has. It is guaranteed that n is even.
The second line contains a sequence of n positive integers _a_1, _a_2, ..., a__n (1 ≤ a__i ≤ 109) — the numbers on Eugeny's cards.
第一行包含两个整数 n 和 m(2≤n≤2⋅105,1≤m≤109)——分别表示尤金尼拥有的卡片数量和尼古拉拥有的卡片数量。保证 n 为偶数。
第二行包含一个由 n 个正整数 a1,a2,…,an(1≤ai≤109)组成的序列——表示尤金尼卡片上的数字。
输出格式
If there is no answer, print -1.
Otherwise, in the first line print the minimum number of exchanges. In the second line print n integers — Eugeny's cards after all the exchanges with Nikolay. The order of cards should coincide with the card's order in the input data. If the i-th card wasn't exchanged then the i-th number should coincide with the number from the input data. Otherwise, it is considered that this card was exchanged, and the i-th number should be equal to the number on the card it was exchanged to.
If there are multiple answers, it is allowed to print any of them.
如果没有答案,输出 -1。
否则,第一行输出最少的交换次数;第二行输出 n 个整数——即 Eugeny 在与 Nikolay 完成所有交换后的卡片序列。卡片的顺序应与输入数据中的顺序一致。若第 i 张卡片未被交换,则输出的第 i 个数应与输入数据中对应的数相同;否则,认为该卡片已被交换,此时输出的第 i 个数应等于与其交换所得卡片上的数字。
若存在多个可行解,输出其中任意一个即可。
输入输出样例
输入#1
6 2 5 6 7 9 4 5
输出#1
1 5 6 7 9 4 2
输入#2
8 6 7 7 7 7 8 8 8 8
输出#2
6 7 2 4 6 8 1 3 5
输入#3
4 1 4 2 1 10
输出#3
-1
输入解题思路,AI测评打分。不知道怎么写?