题解好像发不了图片
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int n,q,p;
priority_queue<int> pq;
int main()
{
cin>>n>>p>>q;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
pq.push(x);
}
while(q||p)
{
int t=pq.top();
pq.pop();
if(p)
{
t=sqrt(t);
p--;
}
else if(q)
{
t/=2;
q--;
}
pq.push(t);
}
int s=0;
while(!pq.empty())
{
s+=pq.top();
pq.pop();
}
cout<<s;
return 0;
}
贪心+优先队列(堆排序)