蒟蒻求教qaq:用二分和队列,结果#4 WA了
查看原帖
蒟蒻求教qaq:用二分和队列,结果#4 WA了
247743
隐仞Mrsu楼主2020/8/30 08:38

蒟蒻求教qaq:用二分和队列,结果#4 WA了

#include<iostream>
#include<deque>
#include<algorithm>
#include<cstdio>
#define ll long long
using namespace std;
deque <ll> a;
ll n,w[10005],i,k,res;
bool fir(){
	if(k<=a[0]){
		a.push_front(k);
		return 0; 
	}
	if(k>=a[a.size()-1]){
		a.push_back(k);
		return 0; 
	}
	return 1;
}
void ef(ll l,ll r){
	//cout<<l<<" "<<r<<endl;
	if(r-l<=1){
		a.insert(a.begin()+l+1,k); 
		return;
	}
	ll mid=(l+r)>>1;
	if(k==a[mid]){
		a.insert(a.begin()+mid+1,k); 
		return;
	}
	if(k<a[mid]){
		ef(l,mid);
	}
	else{
		ef(mid+1,r);
	}
}
int main(){
	//freopen("!read.txt","r",stdin);
	cin>>n;
	for(i=1;i<=n;i++){
		cin>>w[i];
	}
	sort(w+1,w+1+n);
	for(i=1;i<=n;i++){
		a.push_back(w[i]);
	}
	while(a.size()>1){
		k=a[0]+a[1];
		res+=k;
		a.pop_front();
		a.pop_front();
		if(fir())ef(0,a.size()-1); 
	}
	cout<<res<<endl;
	return 0;
}
2020/8/30 08:38
加载中...