0028 : ฟุตบอลโลก (worldcup)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)
ใน
การแข่งขันฟุตบอลโลก 2010 ที่ประเทศแอฟริกาใต้
มีทีมที่เข้าร่วมแข่งขันทั้งหมด 32 ทีม การแข่งขันในรอบแรกจะแบ่งออกเป็น 8
กลุ่ม กลุ่มละ 4 ทีม ทีมในแต่ละกลุ่มจะทำการแข่งขันแบบพบกันหมด
โดยในการแข่งขันแต่ละนัด ทีมที่ชนะจะได้ 3 คะแนน ทีมที่แพ้จะไม่ได้คะแนน
แต่ถ้าเสมอกันก็จะได้คะแนนทีมละ 1 คะแนน หลังจากแข่งขันจบ ทีมที่ได้อันดับ 1
และอันดับ 2 ของแต่ละกลุ่ม จะได้ผ่านเข้าสู่รอบต่อไป
ซึ่งการจัดอันดับทีมในแต่ละกลุ่มจะพิจารณาจากเกณฑ์ดังนี้Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)
- ดูจากคะแนนที่ได้ ทีมใดได้คะแนนมากกว่าจะอยู่ในอันดับที่ดีกว่า
- หากเกณฑ์ในข้อ 1 ยังเท่ากัน ให้ดูจากจำนวนประตูที่ยิงได้ลบด้วยจำนวนประตูที่ถูกยิง ทีมใดได้มากกว่าก็จะอยู่ในอันดับที่ดีกว่า
- หากเกณฑ์ในข้อ 2 ยังเท่ากัน ดูจากจำนวนประตูที่ยิงได้ ทีมใดได้มากกว่าก็จะอยู่ในอันดับที่ดีกว่า
งานของคุณ
จงเขียนโปรแกรมเพื่อรับผลการแข่งขันของทีมในกลุ่มหนึ่ง และคำนวณหาคะแนนและอันดับในกลุ่มของแต่ละทีม
ข้อมูลนำเข้า
ใน 4 บรรทัดแรก บรรทัดที่ i (1 ≤ i ≤ 4) จะระบุชื่อทีมที่ i ซึ่งเป็นสตริงที่ประกอบด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่หรือพิมพ์เล็ก เท่านั้น (ไม่มีเว้นวรรค) และจะมีความยาวไม่เกิน 20 ตัวอักษร
ในบรรทัดที่ 5 ถึงบรรทัดที่ 8 จะระบุจำนวนเต็มบรรทัดละ 4 ตัว โดยจำนวนเต็มตัวที่ j (1 ≤ j ≤ 4) ในบรรทัดที่ i+4 (1 ≤ i ≤ 4) จะแสดงถึงจำนวนประตูที่ทีมที่ i ยิงได้ ในนัดที่แข่งขันกับทีมที่ j ยกเว้นในกรณีที่ i = j จำนวนเต็มดังกล่าวจะมีค่าเป็นศูนย์เสมอ
การแข่งขันแต่ละนัดจะมีการยิงประตูเกิดขึ้นไม่เกิน 10 ประตู และรับประกันว่าจะไม่มีสองทีมใดที่เท่ากันหมดในเกณฑ์การจัดอันดับทั้ง 3 ข้อ
ข้อมูลส่งออก
มี 4 บรรทัด โดยในบรรทัดที่ i (1 ≤ i ≤ 4) แสดงชื่อทีมที่ได้อันดับที่ i ของกลุ่ม ตามด้วยคะแนนของทีมดังกล่าว
การให้คะแนน
40% ของข้อมูลทดสอบ จะไม่มีสองทีมใดที่ได้คะแนนเท่ากันเลย
ที่มา การแข่งขัน IOI Thailand League เดือนกรกฏาคม 2553 โจทย์โดย: สุธี เรืองวิเศษ
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
Denmark Netherlands Cameroon Japan 0 0 2 1 2 0 2 1 1 1 0 0 3 0 1 0 | Netherlands 9 Japan 6 Denmark 3 Cameroon 0 |
Germany Serbia Australia Ghana 0 0 4 1 1 0 1 0 0 2 0 1 0 1 1 0 | Germany 6 Ghana 4 Australia 4 Serbia 3 |
Coding
#func for get TeamName
def getTeamNameList(total_team) :
team_name_arrayList = ["" for x in range(total_team)]
for currentTeam in range(total_team) :
print("Team",currentTeam+1,end=" = ")
#list.append(input(""))
team_name_arrayList[currentTeam] = input("")
return team_name_arrayList
#func for get Score for each Team
def getTeamScore(total_team) :
team_score = [[0 for x in range(total_team)] for x in range(total_team)]
for currentTeam in range(total_team) : #get score for each team
print("Score Team",currentTeam+1,end=" = ")
scoreList = input("").split()
for vsTeam in range(total_team) :
if currentTeam==vsTeam :
team_score[currentTeam][vsTeam] = 0
else :
team_score[currentTeam][vsTeam] = int(scoreList[vsTeam])
return team_score
#func for get Point for each Team
def getTeamPoint(team_score,total_team) :
team_point = [[0 for x in range(total_team)] for x in range(total_team)]
for currentTeam in range(total_team) :
team_point[currentTeam][currentTeam] = 0
for counter in range(1,total_team) :
vsTeam = currentTeam + counter #team+1,+2,+3,+.. but not more than total_team
if vsTeam >= total_team :
vsTeam = vsTeam % total_team
team_point[currentTeam][vsTeam] = calPoint(team_score[currentTeam][vsTeam],team_score[vsTeam][currentTeam])
return team_point
#func for calcualte Point
def calPoint(currentTeamScore,vsTeamScore) :
if currentTeamScore > vsTeamScore :
return 3
elif currentTeamScore == vsTeamScore :
return 1
else :
return 0
#func for sort team by point , score
def sortAndPrintTeam(total_team,teamName,score,point) :
totalPoint = calTotalPoint(total_team,point)
totalGoal = calTotalGoal(total_team,score)
totalGoalLost = calTotalGoalLost(total_team,score)
totalGoalDiff = calGoalDiff(totalTeam,totalGoal,totalGoalLost)
#sorting
for i in range(total_team) :
for j in range(i+1,total_team) :
if (totalPoint[i]<totalPoint[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
elif (totalPoint[i]==totalPoint[j]) and (totalGoal[i]<totalGoal[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
elif (totalGoal[i]==totalGoal[j]) and (totalGoalDiff[i]<totalGoalDiff[j]) :
tempName = teamName[i]
tempPoint = totalPoint[i]
tempGoal = totalGoal[i]
tempGoalDiff = totalGoalDiff[i]
teamName[i] = teamName[j]
totalPoint[i] = totalPoint[j]
totalGoal[i] = totalGoal[j]
totalGoalDiff[i] = totalGoalDiff[j]
teamName[j] = tempName
totalPoint[j] = tempPoint
totalGoal[j] = tempGoal
totalGoalDiff[j] = tempGoalDiff
#showing
for currentTeam in range(total_team) :
print(teamName[currentTeam]," ",totalPoint[currentTeam])
def calTotalPoint(total_team,point) :
total_point = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team) :
total_point[currentTeam] = total_point[currentTeam] + point[currentTeam][vsTeam]
return total_point
def calTotalGoal(total_team,score) :
total_goal = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team) :
total_goal[currentTeam] = total_goal[currentTeam] + score[currentTeam][vsTeam]
return total_goal
def calTotalGoalLost(total_team,score) :
total_lost = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
for vsTeam in range(total_team):
total_lost[currentTeam] = total_lost[currentTeam] + score[vsTeam][currentTeam]
return total_lost
def calGoalDiff(total_team,goal,lost) :
diff = [0 for x in range(total_team)]
for currentTeam in range(total_team) :
diff[currentTeam] = goal[currentTeam] - lost[currentTeam]
return diff
totalTeam = 4 #number of total team
teamNameList = getTeamNameList(totalTeam) #ArrayList for keep team
teamScore = getTeamScore(totalTeam) #array keep score [teamNumber][vsTeamNumber]
teamPoint = getTeamPoint(teamScore,totalTeam) #calculate score to point for each Team
sortAndPrintTeam(totalTeam,teamNameList,teamScore,teamPoint)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น