acm集训,开始学基本数据结构,先发点基础的(自己看,同时也方便大家)
#include<iostream>
#include<map>
#include<vector>
using namespace std;
int main()
{
int n,m,key,v;
unsigned k;
while(cin>>n>>m)
{
map<int, vector<int> > date;
for(int i=1;i<=n;i++)
{
cin>>key;
if(!date.count(key))
date[key]=vector<int>();
date[key].push_back(i);
}
for(i=0;i<m;i++)
{
cin>>k>>v;
if(!date.count(v)||k>date[v].size())
cout<<0<<endl;
else
cout<<date[v][k-1]<<endl;
}
}
return 0;
}
同时附上同学的代码,额,觉得他代码更容易理解,向他学习
#include<cstdio> #include<map> #include<vector> using namespace std; map<int ,vector<int> > mm; int main(){ int n,m,a, k,v; while(scanf("%d%d",&n,&m)==2){ mm.clear(); for(int i=1;i<=n;i++){ scanf("%d",&a); mm[a].push_back(i); } while(m--){ scanf("%d%d",&k,&v); if(mm[v].size()<k) printf("0\n"); else printf("%d\n",mm[v][k-1]); } } return 0; }