可以吗
查看原帖
可以吗
1050072
a18981826590楼主2024/7/9 13:55
#include<bits/stdc++.h>
using namespace std;
priority_queue<int> a;
int m,n,p,q;
long long int s;
int main(){
    scanf("%d%d%d",&n,&p,&q);
    while(n--){
    	scanf("%d",&m);
    	a.push(m);
	}
	while(p||q){
		if(p&&q){
			if(sqrt(a.top())<a.top()/2){
				a.push(sqrt(a.top()));
				p--;
			}
			else{
				a.push(a.top()/2);
				q--;
			}
		}
		else if(p){
			a.push(sqrt(a.top()));
			p--;
		}
		else{
			a.push(a.top()/2);
			q--;
		}
		a.pop();
	}
	while(!a.empty()){
		s+=a.top();
		a.pop();
	}
	printf("%lld",s);
    return 0;
}
2024/7/9 13:55
加载中...