码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 11991 求第k个数值为v的下标

时间:2016-03-17 10:57:31      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

给定一个数组,求第k个数值为v的下标

map<int,vector<int> > index

K:存放数值

V:存放该数值下标的集合

所以答案为 index[v][k-1]

判断是否有 该数值: index.count(v) > 0

#include<cstdio>
#include<iostream>
#include<queue>
#include<string>
#include<math.h>
#include<stack>
#include<cstdlib>
#include<map>
#include<vector>
#include<algorithm>
#include<cctype>
#include<sstream>

typedef long long ll;
using namespace std; 

int a[100005];
int n,m;
map<int,vector<int> > index;
void input(){
    index.clear();
    for(int i = 0 ; i < n ; i ++){
        int x;
        scanf("%d",&x);
        index[x].push_back(i+1);    // vector存放下标    
    }
}

void solve(){
    for(int i = 0 ; i < m ; i ++){
        int k,v;  // v的第k个 
        scanf("%d%d",&k,&v);
        if(index.count(v) == 0) printf("0\n");            // index.count(v):是否有v 
        else if(k > index[v].size())    printf("0\n"); //index[v].size() :有几个v   
        else printf("%d\n",index[v][k-1]);
    }
}

int main(){
    while(scanf("%d%d",&n,&m) != EOF){
        input();
        solve();
    }
    return 0;
} 

 

UVA 11991 求第k个数值为v的下标

标签:

原文地址:http://www.cnblogs.com/zstu-jack/p/5286435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!