题目描述
给出一个包含n个整数的数组,你需要回答若干询问。每次询问两个整数k和v输出从左到右第k个v的下标
(数组下表编号从1 - n)
样例
输入
5 3
1 1 2 1 3
3 1
1 2
2 3
输出
4
3
0
算法
用 map 映射一下
C++ 代码
#include <iostream>
#include <cstdio>
#include <map>
#include <vector>
using namespace std;
map<int , vector<int> > a;
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
int n , m , x , y;
cin >> n >> m;
for(int i = 0 ; i < n ; i ++) {
cin >> x;
if(!a.count(x)) a[x] = vector<int> (); // 如果没有 要申请一下空间
a[x].push_back(i + 1);
}
while(m -- ) {
cin >> x >> y;
if(!a.count(y) || a[y].size() < x) cout << "0\n";
else cout << a[y][x - 1] << '\n';
}
return 0;
}