PAT 乙级 1041 考试座位号(15) C++版
1041. 考试座位号(15)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。
输入格式:
输入第一行给出一个正整数N(<=1000),随后N行,每行给出一个考生的信息:“准考证号 试机座位号 考试座位号”。其中准考证号由14位数字组成,座位从1到N编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。
考生信息之后,给出一个正整数M(<=N),随后一行中给出M个待查询的试机座位号码,以空格分隔。
输出格式:
对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用1个空格分隔。
输入样例:4 10120150912233 2 4 10120150912119 4 1 10120150912126 1 3 10120150912002 3 2 2 3 4输出样例:
10120150912002 2 10120150912119 1
思路:题目很明确的说座位号按1-N排列,且题目是利用试机座位号来求学号和考场座位号,所以可以将试机座位号座位数组下标来存储,方便进行查询
1 // 1041.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include<iostream> 6 #include<map> 7 #include<string> 8 9 using namespace std; 10 11 struct information 12 { 13 string num;//学号 14 int reality_num;//考场座位号 15 }; 16 17 int main() 18 { 19 int N,vir_num,rea_num; 20 string str; 21 22 cin >> N; 23 24 information *p = new information[N+1]; 25 26 for (int i = 0; i < N; ++i) 27 { 28 getchar(); 29 30 cin >> str >> vir_num >> rea_num; 31 32 //将实际座位号座位下标来存储 33 p[vir_num].num = str; 34 p[vir_num].reality_num = rea_num; 35 } 36 37 int M, a, b; 38 39 getchar(); 40 cin >> M; 41 42 int *q = new int[M]; 43 44 for (int i = 0; i < M; ++i) 45 { 46 cin >> q[i]; 47 48 cout << p[q[i]].num<<" "<<p[q[i]].reality_num << endl; 49 } 50 51 delete[] p; 52 delete[] q; 53 54 return 0; 55 }