【悬赏3RMB】求助 WA#1 本地样例全过
查看原帖
【悬赏3RMB】求助 WA#1 本地样例全过
486799
BlackPanda楼主2022/7/21 12:22
#include <bits/stdc++.h>
using namespace std;

struct Node{
	string name;
	int jsq;	//净胜球 
	int jqs;	//进球数 
	int sc;	//分数 
}a[105];

int n,s1,s2;
string n1,n2;
char ch;

map<string,int> score,jqs,jsq;

bool cmp(Node a,Node b){
	if(a.sc == b.sc){
		if(a.jsq == b.jsq){
			return a.jqs > b.jqs; 
		}
		else{
			return a.jsq > b.jsq;
		}
	}
	else{
		return a.sc > b.sc;
	}
}

bool cmp2(Node a,Node b){
	return a.name < b.name;
} 

int main(){
	std::ios::sync_with_stdio(false);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		cin >> a[i].name;
		a[i].jsq=a[i].jqs=a[i].sc=0;
		score[a[i].name] = jqs[a[i].name] = jsq[a[i].name] = 0;
	}
	for(int i=1;i<=n*(n-1)/2;i++){
		n1="",n2="";s1=0,s2=0; 
		while(1){
			scanf("%c",&ch);
			if(ch == '-')	break;
			else	if((ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z'))	n1+=ch;
		}
		while(1){
			scanf("%c",&ch);
			if(ch == ' ')	break;
			else	n2+=ch;
		}
		while(1){
			scanf("%c",&ch);
			if(ch == ':')	break;
			else	s1*=10,s1+=ch-'0';
		}
		scanf("%d",&s2);
		if(s1 > s2)	score[n1]+=3;
		else if(s1 == s2)	score[n1]++,score[n2]++;
		else if(s1 < s2)	score[n2]+=3;
		jsq[n1]+=s1-s2;jsq[n2]+=s2-s1;
		jqs[n1]+=s1;jqs[n2]+=s2;
	}
	for(int i=1;i<=n;i++){
		a[i].sc=score[a[i].name];
		a[i].jqs=jqs[a[i].name];
		a[i].jsq=jsq[a[i].name];
	}
	sort(a+1,a+n+1,cmp);
	sort(a+1,a+n/2+1,cmp2);
	for(int i=1;i<=n/2;i++){
		cout << a[i].name;
		if(i != n/2)	cout << "\n";
	}
	return 0;
}



2022/7/21 12:22
加载中...