//Root :: AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) :: Chapter 1. Algorithm Design :: General Problem Solving Techniques :: Examples
//UVA 11991 - Easy Problem from Rujia Liu? // 昨晚/*题意:给n个数,m个询问,问第k个位置的v的序号是多少?思路:第一次提交 O(n)时间 ,运行错误runtime error,二维数组又爆,参考他人使用map容器和vector的//map:一对一映射,无重复元素,基于关键字查找 C++ STL模板巧很好用 要学的东西太多了*///AC#include<cstdio>#include<map>#include<vector>using namespace std;int n,m;map<int ,vector<int> > s;//开辟二维向量s 记录元素、元素个数、元素位置int main(){ int a,i,k,v; while(scanf("%d%d",&n,&m)!=EOF) { s.clear();//每次初始化 for(i=1;i<=n;i++) { scanf("%d",&a); s[a].push_back(i);//存储a 和a的序号 并对a的个数进行累加 } for(i=0;i<m;i++) { scanf("%d%d",&k,&v); if(s[v].size()<k) //a的总个数 printf("0\n"); else printf("%d\n",s[v][k-1]); } } return 0;}/*//runtime error 改的我肚子疼#include<stdio.h>#include<string.h>const int M=100010;long long m,n;long long a[M],ind[M];int f(int x,int y){ long long i,j=0,ok=0; if(ind[y]==0) return 0; else { for(i=0;i<n;i++) { if(a[i]==y) { if(j<x) j++; if(j==x) { ok=1;break; } } } } if(ok)return i+1; else return 0;}int main(){ long long i,j,k,c,b,d; while(scanf("%lld%lld",&n,&m)!=EOF) { memset(ind,0,sizeof(ind)); for(i=0;i<n;i++) scanf("%lld",&a[i]); for(i=0;i<m;i++) { scanf("%lld%lld",&b,&c); ind[c]++; d= f(b,c); printf("%lld\n",d); } } return 0;}/*8 81 2 3 4 4 5 8 9*/*/