我的错误AC代码
#include<bits/stdc++.h>
using namespace std;
long long n,m,t,ans[500005];
struct node{
long long val,id;
}heap[500005];
void down(long long i){
long long son=i*2;
if(son<=n){
if(son+1<=n&&(heap[son+1].val<heap[son].val||heap[son+1].val==heap[son].val&&heap[son+1].id<heap[son].id)){
son++;
}
if(heap[son].val<heap[i].val||heap[son].val==heap[i].val&&heap[son].id<heap[i].id){
swap(heap[son],heap[i]);
down(son);
}
}
else return;
}
struct cxk{
long long ren,ji;
}a[500005];
bool cmp(cxk x,cxk y){
if(x.ji==y.ji) return x.ren<y.ren;
return x.ji<y.ji;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
heap[i].val=0;
heap[i].id=i;
}
for(int i=1;i<=m;i++){
cin>>t;
ans[i]=heap[1].id;
heap[1].val+=t;
down(1);
}
for(int i=1;i<=m;i++){
a[i].ren=i;
a[i].ji=ans[i];
}
sort(a+1,a+m+1,cmp);
a[0].ji=a[1].ji;
for(int i=1;i<=m;i++){
if(a[i].ji==a[i-1].ji){
cout<<a[i].ren<<" ";
}
else{
cout<<endl;
cout<<a[i].ren<<" ";
}
}
cout<<endl;
if(m<n){//此处错误
for(int i=m+1;i<=n;i++){
cout<<0<<endl;
}
}
return 0;
}
if(m<n){
for(int i=m+1;i<=n;i++){
cout<<0<<endl;
}
}
3 4
0 0 0 0
1 2 3 4
1 2 3 4
0
0
原因是当评测节点没有被分配任务时
代码的考虑的特殊情况出了问题
但仍然通过,希望能加一下数据 (逃)