目录:
题目:
小八打了 n� 次攻击,第 i� 次攻击可以造成 ai�� 点伤害。现在你可以选择其中的 m� 次攻击使得其伤害翻倍。请你回答最多可以造成多少总伤害。
输入格式
第一行 22 个整数 n,m�,�,表示攻击次数和可以选择伤害翻倍的攻击次数。
接下来一行包含 n� 个整数 a1,a2,...,an�1,�2,...,��。
输出格式
仅 11 行 11 一个正整数,表示最多能造成的总伤害。
样例输入
5 3
3 9 5 3 2
样例输出
39
数据规模
对于 100%100% 的数据,保证 1≤m≤n≤103,1≤ai≤1091≤�≤�≤103,1≤��≤109。
代码:
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
long long n,m,a[1005],ans,i;
int main(){
cin>>n>>m;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
reverse(a+1,a+1+n);
for(int i=1;i<=n;i++){
if(i<=m)
ans+=a[i]*2;
else
ans+=a[i];
}
cout<<ans;
return 0;
}
思路:
先将n次攻击按照伤害从大到小排序,然后选择前m次伤害最大的攻击进行翻倍。最后计算总伤害。