社区讨论
求助!!!
P1090[NOIP 2004 提高组] 合并果子参与者 3已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @lzuogoa9
- 此快照首次捕获于
- 2024/08/15 10:45 2 年前
- 此快照最后确认于
- 2024/08/15 13:54 2 年前
样例都过了,但是只有十分!!!
CPP#include<bits/stdc++.h>
using namespace std;
int n,dui[100005],x;
long long s;
void down(int a) {
int t;
while(a*2<=x) {
if(a*2+1<=x){
t=dui[a*2]<dui[a*2+1]?a*2:a*2+1;
}else{
t=a*2;
}
if(dui[a]<dui[t]) break;
else{
swap(dui[a],dui[t]);
a=t;
}
}
}
void shanchu(int a) {
dui[a]=dui[x--];
down(a);
}
void charu(int a) {
dui[++x]=a;
down(x);
}
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>dui[i];
down(i);
}
x=n;
while(x>1) {
int a=dui[1];
shanchu(1);
int b=dui[1];
shanchu(1);
s+=a+b;
charu(a+b);
}
cout<<s;
return 0;
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...