求问RE
查看原帖
求问RE
915727
hao_zi6366楼主2024/10/22 11:09

似乎是内存问题?求调。

#include<bits/stdc++.h> 
#define inf 0x7fffffff
typedef long long ll;
const int  AN=1e5+5;
const int N=1e7+5;
ll t[AN];
int n;
int main(){
	//freopen("P11186.in","r",stdin);
	//freopen("P11186.out","w",stdout);
	std::ios::sync_with_stdio(0);
	std::cin.tie(0);
	std::cout.tie(0);
	
	std::cin>>n;
	std::vector<ll> a(n+5);
	for(int i=1;i<=n;i++){
		std::cin>>a[i];
		t[a[i]]++;
	}
	std::queue<ll> q1;
	std::queue<ll> q2;
	for(int i=1;i<=AN;i++){
		for(int j=1;j<=t[i];j++){
			q1.push(i);
		}
	}
//	while(!q1.empty()){
//		std::cout<<q1.front()<<" ";q1.pop();
//	}
	ll sum=0;
	for(int i=1;i<n;i++){
		ll x,y;
//		if(!q1.empty())std::cout<<q1.front()<<" ";
//		else std::cout<<"nan ";
//		if(!q2.empty())std::cout<<q2.front()<<" ";
//		else std::cout<<"nan ";
//		std::cout<<sum<<"\n";
		if(q2.empty()){
			x=q1.front();q1.pop();y=q1.front();q1.pop();
			q2.push(x+y);sum+=x+y;continue;
		}else if(q1.empty()){
			x=q2.front();q2.pop();y=q2.front();q2.pop();
			q2.push(x+y);sum+=x+y;continue;
		}else{
			if(q1.front()<=q2.front()){
				x=q1.front();q1.pop();
				if(q1.empty()){
					y=q2.front();q2.pop();q2.push(x+y);sum+=x+y;continue;
				}else if(q2.empty()){
					y=q1.front();q1.pop();q2.push(x+y);sum+=x+y;continue;
				}else{
					if(q1.front()<=q2.front()){
						y=q1.front();q1.pop();q2.push(x+y);sum+=x+y;continue;
					}else{
						y=q2.front();q2.pop();q2.push(x+y);sum+=x+y;continue;
					}
				}
			}else{
				x=q2.front();q2.pop();
				if(q1.empty()){
					y=q2.front();q2.pop();q2.push(x+y);sum+=x+y;continue;
				}else if(q2.empty()){
					y=q1.front();q1.pop();q2.push(x+y);sum+=x+y;continue;
				}else{
					if(q1.front()<=q2.front()){
						y=q1.front();q1.pop();q2.push(x+y);sum+=x+y;continue;
					}else{
						y=q2.front();q2.pop();q2.push(x+y);sum+=x+y;continue;
					}
				}
			}
		}
	}
	std::cout<<sum;
	return 0;
}
2024/10/22 11:09
加载中...