数据最大只有100W,果断hash之。
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <vector> 5 using namespace std; 6 7 const int N = 1000001; 8 vector<int> v[N]; 9 10 void init() 11 { 12 for ( int i = 0; i < N; i++ ) 13 { 14 v[i].clear(); 15 } 16 } 17 18 int query( int k, int val ) 19 { 20 if ( v[val].size() < k ) return 0; 21 return v[val][k - 1]; 22 } 23 24 int main () 25 { 26 int n, m; 27 while ( scanf("%d%d", &n, &m) != EOF ) 28 { 29 init(); 30 for ( int i = 1; i <= n; i++ ) 31 { 32 int tmp; 33 scanf("%d", &tmp); 34 v[tmp].push_back(i); 35 } 36 while ( m-- ) 37 { 38 int k, val; 39 scanf("%d%d", &k, &val); 40 printf("%d ", query( k, val )); 41 } 42 } 43 return 0; 44 }