时间限制: 1000MS
内存限制: 65536KB
题目描述:
编程实现:排队
题目描述:
某校组织了一场篮球比赛,其中一班和二班各出5名同学参加,入场时两个班10名同学需要按照以下规则从左到右排成一队,然后按顺序进入赛场。
规则:
一班5名同学排在队伍前半部分,且5名同学按照身高从矮到高的顺序排列(如下图蓝色背景小人);
二班5名同学排在队伍后半部分,且5名同学按照身高从高到矮的顺序排序(如下图橙色背景小人)。
在给出10名同学的身高及班级后,按照排队规则输出最后排队的顺序(身高保留两位小数)。
输入描述
第一行输入10个浮点型数字,表示每名同学的身高(1.00<身高<2.50,身高保留2位小数),身高之间以一个空格隔开
第二行输入10个正整数,表示10名同学所在的班级(正整数只能为“1”或者“2”,且“1”和“2”各5个,"1"代表一班,“2”代表二班),班级之间以一个空格隔开
(注:第一行输入的第一个数字(身高)对应第二行输入的第一个正整数(班级),以此类推)
输出描述
按照排队规则,输出排序后的身高顺序,且身高之间以一个空格隔开(身高保留两位小数)
样例输入
1.60 1.66 1.58 1.69 1.70 1.50 1.62 1.80 1.73 1.60
1 2 2 1 2 1 2 1 2 1
样例输出
1.50 1.60 1.60 1.69 1.80 1.73 1.70 1.66 1.62 1.58
#include<stdio.h>
int main() {
double a[10],a1[5],a2[5],t;
int b[10],i,j,lena1=0,lena2=0;
for(i=0;i<10;i++){
scanf("%lf",&a[i]);
}
for(i=0;i<10;i++){
scanf("%d",&b[i]);
}
for(i=0;i<10;i++){
if(b[i]==1){
a1[lena1++] = a[i];
}else{
a2[lena2++] = a[i];
}
}
for(i=0;i<4;i++){
for(j=0;j<4-i;j++){
if(a1[j]>a1[j+1]){
t = a1[j];
a1[j]=a1[j+1];
a1[j+1]=t;
}
if(a2[j]<a2[j+1]){
t = a2[j];
a2[j]=a2[j+1];
a2[j+1]=t;
}
}
}
for(i=0;i<5;i++){
printf("%.2f ",a1[i]);
}
for(i=0;i<5;i++){
printf("%.2f ",a2[i]);
}
return 0;
}