给出一个包含n个整数的数组,你需要回答若干询问。每次询问两个整数k和v,输出从左到右第k个v的下标(数组下标从左到右编号为1~n);
代码:
#include <iostream>
#include <cstdio>
#include <map>
#include <vector>
using namespace std;
map<int, vector<int> >a; //最后两个> >不要连写,否则会被误认为>>
int main() {
int n, m, x , y;
while (scanf("%d%d", &n, &m) == 2) {
a.clear();
for (int i = 0; i < n; i ++) {
scanf("%d", &x);
if (!a.count(x)) a[x] = vector<int>();
a[x].push_back(i+1);
}
while (m --) {
scanf("%d%d", &x, &y);
if (!a.count(x) || a[y].size() < x) {
printf("0\n");
} else {
printf("%d\n", a[y][x-1]);
}
}
}
return 0;
}