只对了一个点,求助
查看原帖
只对了一个点,求助
349824
WsW_花逝爆零人楼主2020/7/27 22:55
#include<bits/stdc++.h>
using namespace std;
int tree[10001],len=0;
int sum=0;
void sjiaohuan(int nlen){
		int fz=nlen/2;
		if(nlen==1||tree[fz]<tree[nlen]) return ;
		int x=tree[fz];
		tree[fz]=tree[nlen];
		tree[nlen]=x;
		sjiaohuan(fz);
}
void xjiaohuan(int nlen){
	int hz=nlen*2;
	if(hz>len){
		return ;
	}
	if(hz==len){
		if(tree[hz]<tree[nlen]){
			int x=tree[nlen];
			tree[nlen]=tree[hz];
			tree[hz]=x;
		}
		return ;
	}
	if(hz+1<=len){
		if(tree[hz+1]<=tree[nlen]&&tree[hz]>=tree[hz+1]){
			int x=tree[hz+1];
			tree[hz+1]=tree[nlen];
			tree[nlen]=x;
			xjiaohuan(hz+1);
		}
		if(tree[hz]<=tree[nlen]&&tree[hz+1]>tree[hz]){
			int x=tree[hz];
			tree[hz]=tree[nlen];
			tree[nlen]=x;
			xjiaohuan(hz);
		}
	}
}
int main(){
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		printf("%d ",i);
		int x;
		scanf("%d",&x);
		len++;
		tree[len]=x;
		sjiaohuan(len);
	}
	while(len>1){
		if(tree[3]<=tree[2]&&tree[3]>0){
			tree[3]+=tree[1];
			sum+=tree[3];
		}
		else{
			tree[2]+=tree[1];
			sum+=tree[2];
		}
		tree[1]=tree[len];
		len--;
		xjiaohuan(1);
	}
	printf("%d",sum);
	return 0;
}

输入输不进来,只对了1个点

2020/7/27 22:55
加载中...