题解 P3955 【图书管理员】

· · 题解

一本书可以借给多个人,一本书可以借给多个人!!!! 恶心的题目,不合常规

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,q;//n为书量,q为读者数量
    cin>>n>>q;
    int m[n];//图书编码 
    for(int i=0;i<n;i++) cin>>m[i];//输入n本书图书编码
    for(int i=1;i<=n-1;i++)//编码排序,小到大 
    {
        bool t=1; 
        for(int j=0;j<n-i;j++)
        {
            if(m[j]>m[j+1])
            {
                int k=m[j];
                m[j]=m[j+1];
                m[j+1]=k;
                t=0;
            }
        }
        if(t)break;
    }
    //小到大排序ok

    int a[q][2];//二维数组 
    for(int i=0;i<q;i++) cin>>a[i][0]>>a[i][1];//q人需求 
    //输入完毕,开始匹配
    for(int i=0;i<q;i++)//1~q号读者需求 
    {
        int w=1,qt=0;
        for(int j=1;j<=a[i][0];j++) w*=10;//需求码长度权重 
        for(int j=0;j<n;j++)//1~n号书匹配 
        {
            if(m[j]%w==a[i][1])//匹配到图书 
            {
                qt=1;
                cout<<m[j]<<endl; 
                break; 
            }   
        }
        if(qt)continue; 
        cout<<-1<<endl;//未匹配到 
    }   
}