题目描述
有 n(n≤2×106)n(n≤2×106) 名同学陆陆续续进入教室。我们知道每名同学的学号(在 11 到 109109 之间),按进教室的顺序给出。上课了,老师想知道第 ii 个进入教室的同学的学号是什么(最先进入教室的同学 i=1i=1),询问次数不超过 105105 次。
输入格式
第一行 22 个整数 nn 和 mm,表示学生个数和询问次数。
第二行 nn 个整数,表示按顺序进入教室的学号。
第三行 mm 个整数,表示询问第几个进入教室的同学。
输出格式
输出 mm 个整数表示答案,用换行隔开。
输入输出样例
输入 #1复制
10 3 1 9 2 60 8 17 11 4 5 14 1 5 9
输出 #1复制
1 8 5
代码:
超空间代码展示
/*
gudugudu
*/
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main() {
map<int, string> HashMap;
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
string num;
cin >> num;
HashMap.insert(make_pair(i, num));
}
for (int i = 0; i < m; i++) {
int num;
cin >> num;
auto it = HashMap.find(num);
if (it != HashMap.end()) {
cout << it->second << endl;
}
}
return 0;
}
代码:
/*
gudugudu
*/
#include<iostream>
using namespace std;
long long arr[2000001];
int main() {
long long n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
long long num;
cin >> num;
arr[i] = num;
}
for (int i = 1; i <= m; i++) {
long long num;
cin >> num;
cout << arr[num] << endl;
}
cout << endl;
return 0;
}