【解题报告】 [YNOI2019]排队
【解题报告】 [YNOI2019]排队
题目描述
小明所在的班级要举办一场课外活动,在活动开始之前老师告诉小明:“需要把男女生分成两队,并且每一队都要按照身高从矮到高进行排序”。但是由于小明的马虎,没有把老师的安排转达给同学,导致全班同学已经排成了一列。活动马上要开始了,小明的老师对此很困扰,你能帮帮她吗?
输入格式
输入文件名为queue.in。
每个输入文件包含多组数据。
输入文件的第一行,包含一个正整数T,代表该输入文件中所含的数据组数。
接下来是T组数据,每组数据的格式如下:
每组数据包含3 行;
第一行包含一个整数n,代表班级的总人数,其中(0 < h ≤ \(10^{4}\));
第二行包含n个整数,它们之间用一个空格隔开,代表已经排成的一列中每一位同学的性别。每一位整数只取0 或1(0 表示女生,1 表示男生);
第三行包含n个浮点数,它们之间用一个空格隔开,与第二行中的数据一一对应,代表已经排成的一列中每一位同学的身高h(100 ≤ h ≤ 200)。
输出格式
输出文件名为queue.out。
输出文件包含2T行,分别对应T组数据的答案,每组答案的格式如下:
每组答案包含2 行;
第一行按照从小到大的顺序输出所有女生的身高;
第二行按照从小到大的顺序输出所有男生的身高。
输入输出样例
输入 #1
1
5
1 0 1 0 1
120.2 130.3 140.4 150.5 160.6
输出 #1
130.3 150.5
120.2 140.4 160.6
说明/提示
对于 60%的数据:0 < n ≤ \(10^{2}\),100 ≤ h ≤ 200。
对于 80%的数据:0 < n ≤ \(10^{3}\) ,100 ≤ h ≤ 200。
对于 100%的数据:0 < n ≤ \(10^{4}\),100 ≤ h ≤ 200。
解题思路
分别排序,一道水题
AC代码
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,sex[10005];
double boy[10005],girl[10005];
double m;
int t;
int main()
{
cin>>t;
while(t--)
{
int b=0,g=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>sex[i];
for(int i=1;i<=n;i++)
{
cin>>m;
if(sex[i])
boy[++b]=m;
else
girl[++g]=m;
}
sort(boy+1,boy+1+b);
sort(girl+1,girl+1+g);
for(int i=1;i<=g;i++)
cout<<girl[i]<<" ";
cout<<endl;
for(int i=1;i<=b;i++)
cout<<boy[i]<<" ";
cout<<endl;
}
return 0;
}
本博文为wweiyi原创,若想转载请联系作者,qq:2844938982