本蒟蒻90分,#4快读TLE,求各位大佬调试
查看原帖
本蒟蒻90分,#4快读TLE,求各位大佬调试
1035872
__Giraffe__楼主2024/7/30 21:58
#include<bits/stdc++.h>
using namespace std;
int a[10000010];
queue<long long> u;
queue<long long> q2; 
const long long size=1e7;
long long ans=0;
long long x;
long long y;
char s;
void read(long long &f){
	f=0;
	s=getchar();
	while(1){
		if(s>='0'&&s<='9') f+=s-'0';
		s=getchar();
		if(s==' '||s=='\n'){
			return;
		}else{
			f*=10;
		}
	}
	return;
}
void find(long long &z){
	if(u.empty()&&q2.empty()) z=0;
	else if(((!u.empty()&&!q2.empty())&&u.front()<=q2.front())||(q2.empty()&&!u.empty())){
		z=u.front();
		u.pop();
		return;
	}else {
		z=q2.front();
		q2.pop();
		return;
	}
}
int main(){
	long long n;
	long long sun;
	read(n);
	for(int i=1;i<=n;i++){
		read(sun);
		a[sun]++;
	}
	for(int i=1;i<=size;i++){
		while(a[i]>=1){
			u.push(i);
			a[i]--;
		}
	}
	for(int i=1;i<=n-1;i++){
		find(x);
		find(y);
		q2.push(x+y);
		ans+=(x+y);
	}
	printf("%lld",ans);
	return 0;
}
2024/7/30 21:58
加载中...