Created
April 28, 2016 22:03
-
-
Save nomarlo/65e600bba183c87417d522fa01351a81 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
La idea es representar como una lista de adjacencia el número (n)(el número n esta mapeado para ahorrar espacio) y sus aparaciones en el arreglo | |
eje: 1 5 8 9 5 4 5 | |
5: 2 5 7 | |
**/ | |
#include <iostream> | |
#include <cmath> | |
#include <algorithm> | |
#include <queue> | |
#include <stack> | |
#include <sstream> | |
#include <map> | |
#include <set> | |
#include <queue> | |
#include <cstdio> | |
using namespace std; | |
//typedef pair<int,int> ii;//(valor,posicion) | |
typedef vector<int> vi; | |
struct compare | |
{ | |
bool operator()(const int& l, const int& r) | |
{ | |
return l > r; | |
} | |
}; | |
int n,m; //fila y columnas | |
//vector <vii> G2;//la transpuesta de la matriz M | |
int k,v; | |
int num; | |
int main(){ | |
while(scanf("%d %d",&n,&m)!=EOF){ | |
map <int,int>M; | |
vector <vi> G; | |
//incializamos ambos vectores | |
//G.assign(r,vii()); | |
//Asignamos un elemento para que G[0] sea vacio | |
vi a; | |
G.push_back(a); | |
for(int i=1;i<=n;i++){ | |
scanf("%d",&num); | |
if(M[num]==0){ | |
M[num]=G.size(); | |
vi a; | |
a.push_back(i); | |
G.push_back(a); | |
} | |
else{ | |
G[M[num]].push_back(i); | |
} | |
} | |
while(m--){ | |
scanf("%d %d",&k,&v); | |
if(M[v]==0){ | |
printf("0\n"); | |
} | |
else{ | |
printf("%d\n",G[M[v]].size()<k?0:G[M[v]][k-1]); | |
} | |
} | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment