YTU-OJ-Problem E:ABプログラミング問題-ワールドカップ1次リーグ
Problem E:ABプログラミング問題-ワールドカップグループリーグ
Time Limit: 1 Sec
Memory Limit: 128 MB
Submit: 85
Solved: 25
[ Submit][ Status][ Web Board]
Description
注意:このテーマは自由に設計されていますが、クラスを使用してコード設計を行う必要があります.
ワールドカップの32チームの参加チームは8つのグループに分けられ、各グループにはそれぞれ4つのチームが試合を行い、各チームは他の3つのチームと1試合しか行わなければならず、各グループの4つのチームが循環試合を行い、6試合(a 1-a 2;a 1-a 3;a 1-a 4;a 2-a 3;a 2-a 4;a 3-a 4)を行い、各試合は90分、勝平敗はそれぞれ3、1、0点を蓄積した.各グループのポイントの上位2チームがトーナメント1/8決勝に進出し、16チーム「16強」となった.
各グループにはそれぞれ4つのチームがあり、その順位は以下の規則によって確定される:a、ポイントの高い者は上位b、グループの総純勝球の高い者は上位c、グループの総ゴール数の高い者は上位d、得点が確定しないということは、ゴール数(正数)と失点数です(正数)の差.例えば、赤チーム勝黄チーム4:2、青チーム勝黄チーム3:1、赤チーム負青チーム2:3赤チーム進6球、失5球、純勝球数:6-5=1黄チーム進3球、失7球、純勝球数:3-7=-4青チーム進6球、失3球、純勝球数:6-3=3//以下は参考コード#include#include#includeusing namespace std; class FootballGroup{private:int score[4];//総ポイントint goaldiff[4];//総純勝球int totalgoals[4];//総ゴール数string teamname[4];//チーム名public:FootballGroup(){for(int i=0;i<4;i+){score[i]=goaldiff[i]=0;}}void setTeamName(int teamindex,string name)//teamindex+1チーム目のチーム名{teamname[teamindex]=nameを設定する; } void addMatchresult(int teamindex1,int teamindex2,int score1,int score2); void showResult(); }; int main(){FootballGroup Group Group Group;string name;int i,j;for(i=0;i<4;i+){cin>>name;Group A.setTeamName(i,name);//チームa 1,a 2,a 3,a 4の名前}int score 1,score 2; for(i=0; i<3; i++)//a1-a2;a1-a3;a1-a4;a2-a3;a2-a4;a 3-a 4 for(j=i+1;j<4;j++){cin>>score 1>>score 2;//両チームのスコアGroupA.addMatchresult(i,j,score 1,score 2); } GroupA.showResult(); return 0; }
Input
第1行4チームの名称第2行から第7行まで、6試合のスコア(a 1-a 2;a 1-a 3;a 1-a 4;a 2-a 3;a 2-a 4;a 2-a 4;a 3-a 4)
Output
トーナメントに進出した両チームは、確定できなければ「NO」を出す
Sample Input
Sample Output
HINT
Time Limit: 1 Sec
Memory Limit: 128 MB
Submit: 85
Solved: 25
[ Submit][ Status][ Web Board]
Description
注意:このテーマは自由に設計されていますが、クラスを使用してコード設計を行う必要があります.
ワールドカップの32チームの参加チームは8つのグループに分けられ、各グループにはそれぞれ4つのチームが試合を行い、各チームは他の3つのチームと1試合しか行わなければならず、各グループの4つのチームが循環試合を行い、6試合(a 1-a 2;a 1-a 3;a 1-a 4;a 2-a 3;a 2-a 4;a 3-a 4)を行い、各試合は90分、勝平敗はそれぞれ3、1、0点を蓄積した.各グループのポイントの上位2チームがトーナメント1/8決勝に進出し、16チーム「16強」となった.
各グループにはそれぞれ4つのチームがあり、その順位は以下の規則によって確定される:a、ポイントの高い者は上位b、グループの総純勝球の高い者は上位c、グループの総ゴール数の高い者は上位d、得点が確定しないということは、ゴール数(正数)と失点数です(正数)の差.例えば、赤チーム勝黄チーム4:2、青チーム勝黄チーム3:1、赤チーム負青チーム2:3赤チーム進6球、失5球、純勝球数:6-5=1黄チーム進3球、失7球、純勝球数:3-7=-4青チーム進6球、失3球、純勝球数:6-3=3//以下は参考コード#include
Input
第1行4チームの名称第2行から第7行まで、6試合のスコア(a 1-a 2;a 1-a 3;a 1-a 4;a 2-a 3;a 2-a 4;a 2-a 4;a 3-a 4)
Output
トーナメントに進出した両チームは、確定できなければ「NO」を出す
Sample Input
a1 a2 a3 a4
1 2
0 0
2 3
3 1
2 2
1 2
Sample Output
a2 a4
HINT
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
class FootballGroup
{
private:
int score[4]; //
int goaldiff[4]; //
int totalgoals[4]; //
string teamname[4] ; //
public:
FootballGroup()
{
for(int i=0; i<4; i++)
{
score[i]=goaldiff[i]=totalgoals[i]=0;
}
}
void swap(int *s,int *ss,int *g,int *gg,int *t,int *tt,string *n,string *nn)
{
int m;
string str;
m=*s;
*s=*ss;
*ss=m;
m=*g;
*g=*gg;
*gg=m;
m=*t;
*t=*tt;
*tt=m;
str=*n;
*n=*nn;
*nn=str;
}
void setTeamName(int teamindex,string name) // teamindex+1
{
teamname[teamindex] = name;
}
void addMatchresult(int teamindex1,int teamindex2,int score1,int score2)
{
totalgoals[teamindex1]+=score1;
totalgoals[teamindex2]+=score2;
if(score1>score2)
{
goaldiff[teamindex1]+=(score1-score2);
score[teamindex1]+=3;
}
else if(score1<score2)
{
goaldiff[teamindex2]+=(score2-score1);
score[teamindex2]+=3;
}
else
{
score[teamindex1]+=1;
score[teamindex2]+=1;
}
}
void showResult()
{
int i,j;
for(i=0; i<3; i++)
for(j=i+1; j<4; j++)
if(score[j]>score[i])
swap(&score[i],&score[j],&goaldiff[i],&goaldiff[j],&totalgoals[i],&totalgoals[j],&teamname[i],&teamname[j]);
if(score[1]!=score[2])
cout<<teamname[0]<<" "<<teamname[1]<<endl;
else if (score[0]!=score[1]&&score[1]==score[2]&&score[2]!=score[3])
{
for(i=1; i<2; i++)
for(j=i+1; j<3; j++)
{
if(goaldiff[j]>goaldiff[i])
swap(&score[i],&score[j],&goaldiff[i],&goaldiff[j],&totalgoals[i],&totalgoals[j],&teamname[i],&teamname[j]);
}
if (goaldiff[1]!=goaldiff[2])
{
cout<<teamname[0]<<" "<<teamname[1]<<endl;
}
else
{
if (totalgoals[1]>totalgoals[2])
cout<<teamname[0]<<" "<<teamname[1]<<endl;
else if(totalgoals[1]<totalgoals[2])
cout<<teamname[0]<<" "<<teamname[2]<<endl;
else
cout<<"NO"<<endl;
}
}
else if (score[0]!=score[1]&&score[1]==score[2]&&score[2]==score[3])
{
for(i=1; i<3; i++)
for(j=i+1; j<4; j++)
{
if(goaldiff[j]>goaldiff[i])
swap(&score[i],&score[j],&goaldiff[i],&goaldiff[j],&totalgoals[i],&totalgoals[j],&teamname[i],&teamname[j]);
}
if (goaldiff[1]!=goaldiff[2])
{
cout<<teamname[0]<<" "<<teamname[1]<<endl;
}
else if (goaldiff[1]==goaldiff[2]&&goaldiff[2]!=goaldiff[3])
{
if (totalgoals[1]>totalgoals[2])
cout<<teamname[0]<<" "<<teamname[1]<<endl;
else if(totalgoals[1]<totalgoals[2])
cout<<teamname[0]<<" "<<teamname[2]<<endl;
else
cout<<"NO"<<endl;
}
else if (goaldiff[1]==goaldiff[2]&&goaldiff[2]==goaldiff[3])
{
for(i=1; i<3; i++)
for(j=i+1; j<4; j++)
{
if(totalgoals[j]>totalgoals[i])
swap(&score[i],&score[j],&goaldiff[i],&goaldiff[j],&totalgoals[i],&totalgoals[j],&teamname[i],&teamname[j]);
}
if (totalgoals[1]!=totalgoals[2])
cout<<teamname[0]<<" "<<teamname[1]<<endl;
else
cout<<"NO"<<endl;
}
}
else if(score[1]==score[2]&&score[0]==score[1]&&score[2]==score[3])
{
for(i=0; i<3; i++)
for(j=i+1; j<4; j++)
{
if(goaldiff[j]>goaldiff[i])
swap(&score[i],&score[j],&goaldiff[i],&goaldiff[j],&totalgoals[i],&totalgoals[j],&teamname[i],&teamname[j]);
}
if(goaldiff[1]!=goaldiff[2])
{
cout<<teamname[0]<<" "<<teamname[1]<<endl;
}
else if (goaldiff[0]!=goaldiff[1]&&goaldiff[1]==goaldiff[2]&&goaldiff[2]!=goaldiff[3])
{
if (totalgoals[1]>totalgoals[2])
cout<<teamname[0]<<" "<<teamname[1]<<endl;
else if(totalgoals[1]<totalgoals[2])
cout<<teamname[0]<<" "<<teamname[2]<<endl;
else
cout<<"NO"<<endl;
}
else if (goaldiff[0]!=goaldiff[1]&&goaldiff[1]==goaldiff[2]&&goaldiff[2]==goaldiff[3])
{
for(i=1; i<3; i++)
for(j=i+1; j<4; j++)
{
if(totalgoals[j]>totalgoals[i])
swap(&score[i],&score[j],&goaldiff[i],&goaldiff[j],&totalgoals[i],&totalgoals[j],&teamname[i],&teamname[j]);
}
if (totalgoals[1]!=totalgoals[2])
cout<<teamname[0]<<" "<<teamname[1]<<endl;
else
cout<<"NO"<<endl;
}
else if(goaldiff[0]==goaldiff[1]&&goaldiff[1]==goaldiff[2]&&goaldiff[2]!=goaldiff[3])
{
for(i=0; i<2; i++)
for(j=i+1; j<3; j++)
{
if(totalgoals[j]>totalgoals[i])
swap(&score[i],&score[j],&goaldiff[i],&goaldiff[j],&totalgoals[i],&totalgoals[j],&teamname[i],&teamname[j]);
}
if(totalgoals[0]!=totalgoals[1]&&totalgoals[1]!=totalgoals[2])
cout<<teamname[0]<<" "<<teamname[1]<<endl;
else
cout<<"NO"<<endl;
}
else if(goaldiff[0]==goaldiff[1]&&goaldiff[1]==goaldiff[2]&&goaldiff[2]==goaldiff[3])
{
for(i=0; i<3; i++)
for(j=i+1; j<4; j++)
{
if(totalgoals[j]>totalgoals[i])
swap(&score[i],&score[j],&goaldiff[i],&goaldiff[j],&totalgoals[i],&totalgoals[j],&teamname[i],&teamname[j]);
}
if(totalgoals[1]!=totalgoals[2])
cout<<teamname[0]<<" "<<teamname[1]<<endl;
else
cout<<"NO"<<endl;
}
}
}
};
int main()
{
FootballGroup GroupA;
string name;
int i,j;
for(i=0; i<4; i++)
{
cin>>name;
GroupA.setTeamName(i,name); // a1,a2,a3,a4
}
int score1,score2;
for(i=0; i<3; i++) //a1-a2;a1-a3;a1-a4;a2-a3;a2-a4;a3-a4
for(j=i+1; j<4; j++)
{
cin>>score1>>score2; //
GroupA.addMatchresult(i,j,score1,score2);
}
GroupA.showResult();
return 0;
}