c++练习,请求帮助

时间限制: 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;
}