C. Tanya and Toys
2016-04-07 18:31
197 查看
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
In Berland recently a new collection of toys went on sale. This collection consists of 109 types
of toys, numbered with integers from 1 to 109.
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.
解题说明:题意是有1E9个礼物,第i个礼物价钱是i,然后现在已经有n个不重复的礼物,a[i],m元钱,想尽可能多得买不同种类的礼物,还能买多少个。思路是先不考虑已经买的,从1连续买到k,然后考虑子啊这个区间内已经买的,等于实际上没有花钱。
#include<cstdio>
#include <cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include <map>
using namespace std;
int a[1000000];
int main()
{
int n,m,i,temp,sum=0;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
scanf("%d",&temp);
if(temp<1000000)
{
a[(temp-1)]=1;
}
}
for(i=0,temp=0;sum<=m;i++)
{
if(a[i]!=1)
{
sum+=(i+1);
if(sum>m)
{
sum-=(i+1);
break;
}
temp++;
}
}
printf("%d\n",temp);
temp=i-1;
for(i=0;i<=temp;i++)
{
if(a[i]!=1)
{
printf("%d ",(i+1));
}
}
return 0;
}
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
In Berland recently a new collection of toys went on sale. This collection consists of 109 types
of toys, numbered with integers from 1 to 109.
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.
解题说明:题意是有1E9个礼物,第i个礼物价钱是i,然后现在已经有n个不重复的礼物,a[i],m元钱,想尽可能多得买不同种类的礼物,还能买多少个。思路是先不考虑已经买的,从1连续买到k,然后考虑子啊这个区间内已经买的,等于实际上没有花钱。
#include<cstdio>
#include <cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include <map>
using namespace std;
int a[1000000];
int main()
{
int n,m,i,temp,sum=0;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
scanf("%d",&temp);
if(temp<1000000)
{
a[(temp-1)]=1;
}
}
for(i=0,temp=0;sum<=m;i++)
{
if(a[i]!=1)
{
sum+=(i+1);
if(sum>m)
{
sum-=(i+1);
break;
}
temp++;
}
}
printf("%d\n",temp);
temp=i-1;
for(i=0;i<=temp;i++)
{
if(a[i]!=1)
{
printf("%d ",(i+1));
}
}
return 0;
}
相关文章推荐
- Android应用中图片浏览时实现自动切换功能的方法详解
- 升级java1.8及ssh版本中碰到的问题(三)
- Linux Namespace
- ObjecC 中copy与mutableCopy的说明
- android studio 构建系统基础build
- Java I/O 系统-File类(一)-文件及其内容过滤
- linux小知识
- visibleViewController和topViewController 获取当前显示的页面
- 易企秀
- jquery-layer.closeAll不执行的错觉
- Java对象的强、软、弱和虚引用
- bootstrap框架功能总结
- 3D Slicer+Qt-easy-build+VS2013
- 160407、java实现多线程同步
- ios7之后label高度计算
- SSH框架搭建步骤(笔记)
- 【JQuery UI】菜单工具插件——menu
- Intellij IDEA 14远程调试Tomcat6
- 非递归全排列实现
- 日常——时常看看效果最棒