【解题报告】 [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;
} 
posted @ 2019-09-21 23:32  wweiyi  阅读(380)  评论(0编辑  收藏  举报
js脚本