PTA 智能管家

人上了年纪,记性就会变差,时常不得不翻箱倒柜找东西。智能照护中心现在请你做一个简单的智能管家程序,把老人家里的东西逐一编号,放进若干个收纳箱里。当然收纳箱也是有编号的,你的程序要记录下哪个东西放在哪个收纳箱里。当老人问起某几件东西时,你的程序要告诉老人家,东西分别放在哪些箱子里。

输入格式:

输入在第一行中给出 2 个正整数:N(≤105)是老人家藏物品的数量(所有物品从 1 到 N 编号);M(≤104 且 M<N)是收纳箱的数量(所有收纳箱从 1 到 M 编号)。随后一行给出 N 个正整数,第 i 个数字就是编号为 i 的物品所存放的收纳箱的编号。

接下来是老人的查询数据:首先在一行中给出正整数 K(≤100),为查询次数;随后 K 行,每行给出一系列要查找的物品的编号,以 0 结尾(这个数字不要处理)。

题目保证每行中的查询编号都无重复,每次至少查询一件物品,并且同一行的数字间以空格分隔。

输出格式:

对每一次查询,在一行中按照收纳箱编号的升序输出存放了被查物品的收纳箱,并且同时输出该箱内有多少件被查的物品。输出格式为 Bi-k,其中 i 是箱子编号,k 是物品个数。两只箱子的信息间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

10 5
3 4 4 1 1 5 3 3 3 4
2
8 1 2 5 0
6 0

输出样例:

B1-1 B3-2 B4-1
B5-1

代码长度限制

16 KB

Java (javac)

时间限制

1800 ms

内存限制

512 MB

其他编译器

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

C++代码如下:

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n,m;
    cin>>n>>m;
    int a[n];
    for(int i=1;i<=n;i++){
        int tmp;
        cin>>tmp;
        a[i]=tmp;
    }
    int k;
    cin>>k;
    for(int i=0;i<k;i++){
        int b;
        cin>>b;
        int d[100005]={0};
        while(b!=0){
            int c=a[b];
            d[c]++;
            cin>>b;
        }
        bool first =true;
        for(int i=1;i<=m;i++){
            if(d[i]!=0){
                if(first){
                    cout<<"B"<<i<<"-"<<d[i];
                    first =false;
                }else{
                    cout<<" B"<<i<<"-"<<d[i];
                }
            }
        }
        cout<<endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值