-
时间:2016-03-31 23:49:13 星期四
-
题目编号:[2016-03-31][codeforces][659C][Tanya and Toys].md
-
题目大意:有$10^9$种物品,第i种物品价值i,已经用用n个物品,给m元,问最多能买多少个还没拥有的物品
-
分析:贪心,从最低的开始买起,假设$m = 10^9$,那么也买的物品也不超过$10^6$个,因为$\frac{(1+k)k}{k} < 10^9$
-
遇到的问题:答案可能为0
#include <algorithm>
#include <cstdio>
using namespace std;
int a[100000 + 10];
int ans[1000000];
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i = 0;i < n ; ++i){
scanf("%d",&a[i]);
}
a[n] = 0;
a[n + 1] = 1E9 + 10;
sort(a,a+n+2);
int cnt = 0;
for(int i = 0;i < n+2 && m > 0; ++i){
for(int j = a[i] + 1;j < a[i + 1] && m > 0;++j){
m -= j;
if(m < 0) break;
ans[cnt++] = j;
}
}
printf("%d\n",cnt);
for(int i = 0;i < cnt;++i){
printf("%d ",ans[i]);
}
printf("\n");
return 0;
}
时间: 2024-10-26 15:00:45