10分WA求debug!(有注释)
查看原帖
10分WA求debug!(有注释)
930718
Eason_lyx楼主2023/12/25 21:04
#include<bits/stdc++.h>
using namespace std;
struct ac{
    int id,maxid,maxsum,sum,x[505];
}a[505];
//a[i].x[j]:表示第i与第j个武将的默契值
//a[i].maxid:表示谁与k的默契值最高
//a[i].sum:表示默契值总和
int pl1[505],pl2[505],c1,c2,flag[505];
bool cmp(ac b,ac c){return b.maxsum>c.maxsum;}
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        a[i].id=i;
        for(int j=i+1;j<=n;j++){//input
            scanf("%d",&a[i].x[j]);
            a[j].x[i]=a[i].x[j];
            a[i].sum+=a[i].x[j];
            a[j].sum+=a[j].x[i];
            if(a[i].x[j]>a[i].maxsum){
                a[i].maxsum=a[i].x[j];
                a[i].maxid=j;
            }
            if(a[j].x[i]>a[j].maxsum){
                a[j].maxsum=a[j].x[i];
                a[j].maxid=i;
            }
        }
    }
    //for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)printf("%d   ",a[i].x[j]);printf("max,id:%d %d",a[i].maxsum,a[i].maxid);printf("\n");}
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n/2;i++){
            //pl1:person
            int k=1;
            while(flag[a[k].id])k++;
            k=a[k].id;
            pl1[++c1]=k;
            flag[k]=1;
            //printf("%d ",pl1[c1]);
            //pl2:computer
            int id,maxn;
            for(int i=1;i<=c1;i++){//find the max
                if(a[pl1[i]].maxsum>maxn){
                    if(flag[a[pl1[i]].maxid])continue;
                    maxn=a[pl1[i]].maxsum;
                    id=a[pl1[i]].maxid;
                    }
                }
            pl2[++c2]=id;
            flag[id]=1;
            //printf("%d\n",pl2[c2]);
        }
        //printf("%d %d\n",c1,c2);
        //for(int i=1;i<=c1;i++)printf("%d %d\n",pl1[i],pl2[i]);
    int pl11,pl12,pl21,pl22,m1,m2;
    for(int i=1;i<=n/2;i++){
        for(int j=i+1;j<=n/2;j++){
            if(a[i].x[j]>m1){
                m1=a[i].x[j];
                pl11=i;pl12=j;
            }
        }
    }
    for(int i=1;i<=n/2;i++){
        for(int j=i+1;j<=n/2;j++){
             if(a[i].x[j]>m2){
                m2=a[i].x[j];
                pl21=i;pl22=j;
            }
        }
    }
    int pl1s=a[pl11].x[pl12];
    int pl2s=a[pl21].x[pl22];
    if(pl1s<pl2s){printf("0");return 0;}
    else{
        printf("1\n%d",a[pl11].x[pl12]);
    }
    return 0;
}
2023/12/25 21:04
加载中...