A19859. 救援描述明日中学组建了一支消防队,为了在火灾发生时能够更高效的完成救助同学的任务,消防队队长亮亮制定了一项措施,就是让每个同学都保存自己的手机号码,当发生火灾被困在教室的时候给亮亮的手机发送一条被困教室编号的短信,然后亮亮会按照以下原则安排救援顺序(假设每一间教室的危机程度都是一样的):1.受困人数多的教室应该先被救援;2.当受困人数一样时,教室编号小的先被安排救援;请你帮助亮亮队长编写一个程序…
填空题
容易
知识点
题目描述
救援
描述
明日中学组建了一支消防队,为了在火灾发生时能够更高效的完成救助同学的任务,消防队队长亮亮制定了一项措施,就是让每个同学都保存自己的手机号码,当发生火灾被困在教室的时候给亮亮的手机发送一条被困教室编号的短信,然后亮亮会按照以下原则安排救援顺序(假设每一间教室的危机程度都是一样的):
1.受困人数多的教室应该先被救援;
2.当受困人数一样时,教室编号小的先被安排救援;
请你帮助亮亮队长编写一个程序,能够根据收到的短信内容和以上的救援原则及时计算出救援的顺序。
输入格式
第一行是一个正整数,表示收到救援的信息数(需要救援的人数)。第2行n个整数,每个整数表示学生被困教室的编号
输出格式
救援方案,其中包含m个整数,每个数字表示需要进行救援的教室的编号,相邻两个数字间用“->”连接,数字的顺序表示救援的顺序。
输入样例
8
2 7 3 1 1 2 2 3输出样例
2->1->3->7参考答案
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
struct juy
{
int room;int num;
}stu[100];
int cmp(juy x,juy y)
{
if (x.num > y.num) return x.num>y.num;
else return x.room<y.room;
}
int a[100]={0};
int main(int argc, char *argv[])
{
int n,i,t,j;
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n);
stu[0].room=a[0];
stu[0].num=1;
j=0;
for(i=1;i<n;i++){
if(a[i]==stu[j].room) stu[j].num++;
else{
j++;
stu[j].room=a[i];
stu[j].num=1;
}
}
sort(stu,stu+j+1,cmp);
for(i=0;i<j;i++) printf("%d->",stu[i].room);
printf("%d\n",stu[j].room);
return 0;
}
上一题
下一题