请求加数据
查看原帖
请求加数据
875516
Delete_error楼主2023/5/13 11:51

我的错误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;
    } 
}

Hack 数据

3 4
0 0 0 0

此代码输出:

1 2 3 4

正确输出:

1 2 3 4
0
0

原因是当评测节点没有被分配任务时

应当输出 0

代码的考虑的特殊情况出了问题

但仍然通过,希望能加一下数据 (逃)

2023/5/13 11:51
加载中...