这题自己还打算用优先队列。。。。其实就是个贪心的水题。
参考http://blog.csdn.net/liangzhaoyang1/article/details/52209832
题意:给你有n种礼物,第i种有ai个。现在要把这些礼物分给一排同学,要求每个人发普通礼物和神秘礼物各一个,要求相邻两人的普通礼物不能为同一种,神秘礼物没有限制,普通礼物和神秘礼物都从这n个礼物中选取。问最多能发给多少人。
int x;
int sum = 0, maxx = 0;
for(int i=1; i<=n; i++) {
scanf("%d", &x);
sum += x;
maxx = max(maxx, x);
}
int ans = min(sum/2, (sum-maxx)*2+1);
printf("Case #%d: %d\n", cas++, ans);
}