Description
很多高校都有两个或多个校区,为了方便教师和学生往返于这两个校区,学校在两个校区之间开通了校车。用于通勤的校车只有一个门,上、下车均需要通过此门,且校车的容量上限为c。车内过道很窄,只能容纳一个人通过,为了运送更多的人,车内中间过道上设有活动、可折叠的坐椅,如果有人站在或者坐在中间过道上,任何人都无法通过,是所谓一夫当关万夫莫开。在非常拥挤的情况下,司机通常让先上的人尽量坐在后排位置,这样从后往前一排排坐过来,最先上的人坐最后面,最后上的在最前面。当车到达目的地后,下车时,只能是靠近车门的人先下,这样一排排往后,最后一排的人最后下车。请编程模拟乘坐通勤车的情景:先上的人最后下来。每个乘客用一个编号来表示,用户给出一组乘客上车的编号(即乘客的等车次序),程序输出下车编号顺序。
Input
输入第一行为测试数据组数。每组测试数据第1行输入两个整数n(1<=n<=100)、c(1<=c<=20000)分别代表停车的次数和校车容量,接下来有n行,每一行第一个数m表示有人上车还是下车(0 <= m <= 200):(1)当m=0时,后面紧跟着输入一个非负整数k,表示此时有k个人下车;(2)当m>0时,后面输入m个正整数,表示等待上车的人的编号,可能有人因车满而无法上车。
Output
对每组测试数据,第1行输出数据组数,然后对每一个m为0输出一行k个数的编号(即每次输出都有谁下车了),每两个数中间用空格隔开。
Sample Input
1
4 10
6 1 2 3 4 5 6
0 3
2 7 8
0 3
Sample Output
Case #1:
6 5 4
8 7 3
求数据结构OJ题目:下车的顺序
答案:1 悬赏:50 手机版
解决时间 2021-02-04 16:05
- 提问者网友:無理詩人
- 2021-02-03 15:09
最佳答案
- 五星知识达人网友:一袍清酒付
- 2021-02-03 16:24
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int sta[20010],cnt;
int main()
{
int t;
scanf("%d",&t);
for(int i=1;i<=t;++i)
{
int n,c;
cnt=0;
scanf("%d%d",&n,&c);
for(int i=1;i<=n;++i)
{
int m;
scanf("%d",&m);
if(m>0)
for(int i=1;i<=m;++i)
{
int x;
scanf("%d",&x);
if(cnt<=c)sta[++cnt]=x;
}
else
{
int x;
scanf("%d",&x);
for(int i=1;i<=x;++i)
if(cnt>0)
printf("%d ",sta[cnt--]);
printf("\n");
}
}
}
return 0;
}
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int sta[20010],cnt;
int main()
{
int t;
scanf("%d",&t);
for(int i=1;i<=t;++i)
{
int n,c;
cnt=0;
scanf("%d%d",&n,&c);
for(int i=1;i<=n;++i)
{
int m;
scanf("%d",&m);
if(m>0)
for(int i=1;i<=m;++i)
{
int x;
scanf("%d",&x);
if(cnt<=c)sta[++cnt]=x;
}
else
{
int x;
scanf("%d",&x);
for(int i=1;i<=x;++i)
if(cnt>0)
printf("%d ",sta[cnt--]);
printf("\n");
}
}
}
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯