时间: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;}