曹操要跟诸葛亮比智商。。。是要好好准备准备。
题目大意:
曹操想要提高自己的辩论水平,找了N个人来跟他比智商,当然曹操每次肯定都是赢的,智商比曹操低的人,每赢一个曹操增加1点智商;智商比曹操高的人,每赢一次曹操增加2点智商。比试有一个先后顺序,所以当曹操智商变高之后,以前智商比曹操高的人也就只能给曹操贡献1点智商了。所以我们要解决的问题就是,怎么合理的分配,让曹操手下的给曹操贡献的智商最多。
因为每次曹操智商变高了,都有可能有原来智商比曹操高的,变成智商低的,所以,每次在选择对手的时候,都要尽量选择智商比曹操高的人中智商最低的那个。因为那些只是被曹操超过的人只能给曹操加1点智商,而曹操的智商一直在涨,只有先让智商高的人先跟曹操辩论,才能保证曹操的智商增长最多,其他智商比曹操低的人就直接每个加1点就行了,顺序就不用考虑了。
具体方法:先排序,从小向大找,第一个比曹操智商高的先比试,更新曹操智商,记录比试了几个人了,然后接着往后找,直到所有人都找完。最后加上没有辩论人的数量。
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int num[1000];
int main()
{
int n,cc;
while (scanf("%d%d",&n,&cc) != EOF)
{
for (int i = 1 ; i <= n ; i ++)
scanf("%d",&num[i]);
sort(num+1,num+n+1);
num[0] = n;
for (int i = 1 ; i <= n ; i ++)
{
if (num[i] <= cc ) continue;
cc += 2;
num[0] --;
}
cc += num[0];
printf("%d\n",cc);
}
return 0;
}