社区讨论
0ptsWA求调, 玄关
P13195 [GCJ 2016 #1C] Senate Evacuation参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjdp50p
- 此快照首次捕获于
- 2025/11/04 00:52 4 个月前
- 此快照最后确认于
- 2025/11/04 00:52 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int t1, n, heap[N], p[N], size, go, sum, k;
char a, b;
void heapify(){
int i=1, son=i<<1;
if(!p[heap[1]]){
heap[1]=heap[size];
heap[size]=0;
size--;
}
son= p[heap[son]]<p[heap[son+1]] && son+1<=size ? son+1 : son;
while(son<=size && p[heap[i]]<p[heap[son]]){
swap(heap[i], heap[son]);
i=son; son=i<<1;
son= son+1<=size && p[heap[son+1]]>p[heap[son]] ? son+1 : son;
}
}
int main(){
cin>>t1;
for(int t=1; t<=t1; t++){
cin>>n;
size=0;
sum=0;
memset(heap, 0, (n+5)*sizeof(int));
for(int i=1; i<=n; i++){
cin>>p[i];
sum+=p[i];
}
for(int i=1; i<=n; i++){
heap[++size]=i;
go=size>>1;
k=size;
while(go>=1 && p[go]<p[k]){
swap(heap[go], heap[k]);
k=go;
go/=2;
}
}
printf("Case #%d: ", t);
while(sum){
a='A'-1+heap[1];
p[heap[1]]--;
heapify();
b='A'-1+heap[1];
p[heap[1]]--;
heapify();
printf("%c%c ", a, b);
sum-=2;
if(sum==1){
a=heap[1]+'A'-1;
cout<<a<<endl;
break;
}
}
printf("\n");
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...