Codeforces Round #346 (Div. 2) C. Tanya and Toys
2016-04-01 20:46
309 查看
In Berland recently a new collection of toys went on sale. This collection consists of 109 types
of toys, numbered with integers from 1 to109.
A toy from the new collection of the i-th type costs i bourles.
Tania has managed to collect n different types of toys a1, a2, ..., an from
the new collection. Today is Tanya's birthday, and her mother decided to spend no more than m bourles on the gift to the daughter.
Tanya will choose several different types of toys from the new collection as a gift. Of course, she does not want to get a type of toy which she already has.
Tanya wants to have as many distinct types of toys in her collection as possible as the result. The new collection is too diverse, and Tanya is too little, so she asks you to help her in this.
Input
The first line contains two integers n (1 ≤ n ≤ 100 000)
and m (1 ≤ m ≤ 109) —
the number of types of toys that Tanya already has and the number of bourles that her mom is willing to spend on buying new toys.
The next line contains n distinct integers a1, a2, ..., an (1 ≤ ai ≤ 109) —
the types of toys that Tanya already has.
Output
In the first line print a single integer k — the number of different types of toys that Tanya should choose so that the number of different
types of toys in her collection is maximum possible. Of course, the total cost of the selected toys should not exceed m.
In the second line print k distinct space-separated integers t1, t2, ..., tk (1 ≤ ti ≤ 109) —
the types of toys that Tanya should choose.
If there are multiple answers, you may print any of them. Values of ti can
be printed in any order.
Examples
input
output
input
output
Note
In the first sample mom should buy two toys: one toy of the 2-nd type and one toy of the 5-th
type. At any other purchase for 7 bourles (assuming that the toys of types 1, 3 and 4 have
already been bought), it is impossible to buy two and more toys.
此题用map做的
of toys, numbered with integers from 1 to109.
A toy from the new collection of the i-th type costs i bourles.
Tania has managed to collect n different types of toys a1, a2, ..., an from
the new collection. Today is Tanya's birthday, and her mother decided to spend no more than m bourles on the gift to the daughter.
Tanya will choose several different types of toys from the new collection as a gift. Of course, she does not want to get a type of toy which she already has.
Tanya wants to have as many distinct types of toys in her collection as possible as the result. The new collection is too diverse, and Tanya is too little, so she asks you to help her in this.
Input
The first line contains two integers n (1 ≤ n ≤ 100 000)
and m (1 ≤ m ≤ 109) —
the number of types of toys that Tanya already has and the number of bourles that her mom is willing to spend on buying new toys.
The next line contains n distinct integers a1, a2, ..., an (1 ≤ ai ≤ 109) —
the types of toys that Tanya already has.
Output
In the first line print a single integer k — the number of different types of toys that Tanya should choose so that the number of different
types of toys in her collection is maximum possible. Of course, the total cost of the selected toys should not exceed m.
In the second line print k distinct space-separated integers t1, t2, ..., tk (1 ≤ ti ≤ 109) —
the types of toys that Tanya should choose.
If there are multiple answers, you may print any of them. Values of ti can
be printed in any order.
Examples
input
3 7 1 3 4
output
2 2 5
input
4 14 4 6 12 8
output
4 7 2 3 1
Note
In the first sample mom should buy two toys: one toy of the 2-nd type and one toy of the 5-th
type. At any other purchase for 7 bourles (assuming that the toys of types 1, 3 and 4 have
already been bought), it is impossible to buy two and more toys.
此题用map做的
#include<iostream> #include<map> using namespace std; map<int ,int>p; int a[222222]; int main() { int n,m,x; while(cin>>n>>m) { p.clear(); for(int i=0;i<n;i++) { cin>>x; p[x]=1; } int sum=0,i=1,j=0;; while(1) { if(p[i]==0) { sum+=i; if(sum>m) { break; } else { a[j++]=i; i++; } } else { i++; } } printf("%d\n",j); for(int i=0;i<j;i++) printf("%d ",a[i]); puts(""); } }
相关文章推荐
- 【matlab】:matlab中不断的出现计算过程怎么办
- 构建之法阅读笔记02
- 【c++程序】map一般用法
- 数据库视图和临时表
- MySQL主从复制实现数据库服务器双机热备详细讲解
- 63. Unique Paths II 动态规划的问题
- MySQL主从复制实现数据库服务器双机热备详细讲解
- JavaMail 邮件开发
- 课后实验6--二维数组最大联通子数组的和
- Scala连接mongodb数据库
- 主席树(可持久化线段树)
- HDU 1874-畅通工程续(Floyd)
- struts2 中使用request.getInputStream() 获取POST数据
- 两个 Long 类型为什么不能直接用==比较
- Struts2核心工作原理解析
- codeforces 659E New Reform
- 兰顿蚂蚁
- JavaWeb 后端 <十四> 文件上传下载
- 构建之法阅读笔记04
- 基于cocoapods安装Masonry框架