L - Who is the Champion 计蒜客 - 42587
题意:
给出一个N阶矩阵,( i , j ) (i, j)(i,j)处的数字表示这场比赛球队i ii踢进球队j jj多少球。两支球队平局则各加一分,一方获胜则获胜方加三分,负方不加分也不扣分。输出冠军队编号。优先比较分数,分数一样的话比较胜场数,胜场数一样的话输出play-offs。
题解:
队友写的。。
定义一个结构体,然后按照题目算分,排序就完事了
代码:
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int a[200][200];
struct h{int k;int k1;int id;int w;
};
h k[200];
bool cmp(h a,h b){if(a.w==b.w){return (a.k-a.k1)>(b.k-b.k1);}elsereturn a.w>b.w;
}int main()
{int n;cin>>n;for(int i=1;i<=n;i++){k[i].id=i;for(int j=1;j<=n;j++){cin>>a[i][j];k[i].k+=a[i][j];}}if(n==1){printf("1");return 0;}for(int j=1;j<=n;j++){for(int i=1;i<=n;i++){k[j].k1+=a[i][j];}}for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(a[i][j]>a[j][i]){k[i].w+=3;}else if(a[i][j]==a[j][i]){k[i].w++;k[j].w++;}else{k[j].w+=3;}} }sort(k+1,k+1+n,cmp);if(k[1].w==k[2].w&&k[1].k-k[1].k1==k[2].k-k[2].k1){printf("play-offs");}elseprintf("%d",k[1].id);return 0;
}