这个题其实用不到二分查找法,直接用map<string ,int>用string 映射到对应数字即可。
具体操作如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
queue<string>a;
stack<int>b;
int x,y;cin>>x>>y;
string l;
for(int i=0;i<x;i++)
{
cin>>l;
a.push(l);
}//将盒子编号压入机器中
map<string,int>ll;//创建映射
for(int i=1;i<=x/y;i++)//机器压组数
{
for(int i1=0;i1<y;i1++)
{
int yy;cin>>yy;
b.push(yy);
}//将勋章压入栈中
while(!b.empty())
{
ll[a.front()]=b.top();//将映射赋值
a.pop();b.pop();//赋值结束抛出
}
}
int pp;cin>>pp;
while(pp--)
{
cin>>l;输入盒子编号
if(ll[l])cout<<ll[l]<<endl;//不为0说明有对应映射
else cout<<"Wrong Number"<<endl;//map初值为0直接输出错误
}
}