Though Rujia Liu usually sets hard problems for contests (for example, regional contests like
Xi’an 2006, Beijing 2007 and Wuhan 2009, or UVa OJ contests like Rujia Liu’s Presents 1
and 2), he occasionally sets easy problem (for example, ‘the Coco-Cola Store’ in UVa OJ),
to encourage more people to solve his problems :D
Given an array, your task is to find the k-th occurrence (from left to right) of an integer v. To make the problem more difficult (and interesting!), you’ll have to answer m such queries.
Input There are several test cases. The first line of each test case contains two integers n, m (1 ≤ n,m ≤ 100,000), the number of elements in the array, and the number of queries. The next line contains n positive integers not larger than 1,000,000. Each of the following m lines contains two integer k and v (1 ≤ k ≤ n, 1 ≤ v ≤ 1,000,000). The input is terminated by end-of-file (EOF).
Output
For each query, print the 1-based location of the occurrence. If there is no such element, output ‘0’ instead.
Sample Input
8 4

1 3 2 2 4 3 2 1

1 3

2 4

3 2

4 2
Sample Output
2

0

7

0

题意: 给你一个长度为n的序列 m组询问 第k个v在序列中的位置

题解:水 vector 处理

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<vector>
 5 using namespace std;
 6 int n,m;
 7 int exm;
 8 vector<int> ve[1000005];
 9 int k,v;
10 int main()
11 {
12     while(scanf("%d %d",&n,&m)!=EOF)
13     {
14         for(int i=1;i<=1000000;i++)
15             ve[i].clear();
16         for(int i=1;i<=n;i++)
17             {
18                 scanf("%d",&exm);
19                 ve[exm].push_back(i);
20             }
21         for(int j=1;j<=m;j++)
22         {
23             scanf("%d %d",&k,&v);
24             if(ve[v].size()<k||ve[v].size()==0)
25                 cout<<"0"<<endl;
26             else
27                 cout<<ve[v][k-1]<<endl;
28         }
29     }
30     return 0;
31 }