“一幫一學習小組”是中小學中常見的學習組織方式,老師把學習成績靠前的學生跟學習成績靠后的學生排在一組。本題就請你編寫程序幫助老師自動完成這個分配工作,即在得到全班學生的排名后,在當前尚未分組的學生中,將名次最靠前的學生與名次最靠后的異性學生分為一組。
輸入格式:
輸入第一行給出正偶數N(<=50),即全班學生的人數。此后N行,按照名次從高到低的順序給出每個學生的性別(0代表女生,1代表男生)和姓名(不超過8個英文字母的非空字符串),其間以1個空格分隔。這里保證本班男女比例是1:1,並且沒有並列名次。
輸出格式:
每行輸出一組兩個學生的姓名,其間以1個空格分隔。名次高的學生在前,名次低的學生在后。小組的輸出順序按照前面學生的名次從高到低排列。
輸入樣例:
8 0 Amy 1 Tom 1 Bill 0 Cindy 0 Maya 1 John 1 Jack 0 Linda
輸出樣例:
Amy Jack Tom Linda Bill Maya Cindy John
1 #include<stdio.h> 2 #include<iostream> 3 #include<math.h> 4 #include<string.h> 5 #include<limits.h> 6 #include<algorithm> 7 #include<queue> 8 using namespace std; 9 struct node 10 { 11 char name[10]; 12 int sex; 13 bool vis; 14 }s[55]; 15 int main() 16 { 17 int n,i,j; 18 cin>>n; 19 for(i=0;i<n;i++) 20 { 21 cin>>s[i].sex>>s[i].name; 22 s[i].vis=false; 23 } 24 for(i=0;i<n;i++) 25 { 26 for(j=n-1;j>=0;j--) 27 { 28 if(s[i].sex!=s[j].sex&&!s[i].vis&&!s[j].vis) 29 { 30 s[i].vis=true; 31 s[j].vis=true; 32 cout<<s[i].name<<" "<<s[j].name<<endl; 33 } 34 } 35 } 36 return 0; 37 }