思路是
以“试机座位号”为关键字,“准考证号”和“考试座位号”为值建立一张表,把信息储存到这张表内,查询的时候直接查表即可。
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
struct Student
{
string id;
int pos;
};
map<int,Student> m;
const Student* find(int pos_temp);
int main()
{
int n;
Student s;
int pos_temp;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>s.id>>pos_temp>>s.pos;
m.insert(pair<int,Student>(pos_temp,s));
}
cin>>n;
int* p=new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
const Student* q=NULL;
for(int i=0;i<n-1;i++)
{
q=find(p[i]);
cout<<q->id<<" "<<q->pos<<endl;
}
q=find(p[n-1]);
cout<<q->id<<" "<<q->pos<<endl;
delete p;
return 0;
}
const Student* find(int pos_temp)
{
map<int,Student>::iterator itor=m.find(pos_temp);
if(itor!=m.end())
return &(itor->second);
else
return NULL;
}