题意:给你一个数组,求第k个v的下标是
思路:用map和vector结合,很巧妙的应用,节省了很大的空间
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#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) != EOF){
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(y) || a[y].size() < x)
printf("0\n");
else printf("%d\n",a[y][x-1]);
}
}
return 0;
}UVA - 11991 Easy Problem from Rujia Liu?
原文:http://blog.csdn.net/u011345136/article/details/19299995