
#include <bits/stdc++.h>
using namespace std;
bool isValid(int i, int j, int R, int C)
{
if (i < 0 || i >= R || j >= C || j < 0)
return false;
return true;
}
void kthOccurrenceOfElement(
vector<vector<int> > arr,
vector<vector<int> > Q)
{
int R = arr.size();
int C = arr[0].size();
unordered_map<int, vector<int> > um;
int pos = 1;
for (int k = 0; k < R; k++) {
um[arr[k][0]].push_back(pos);
pos++;
int i = k - 1;
int j = 1;
while (isValid(i, j, R, C)) {
um[arr[i][j]].push_back(pos);
pos++;
i--;
j++;
}
}
for (int k = 1; k < C; k++) {
um[arr[R - 1][k]].push_back(pos);
pos++;
int i = R - 2;
int j = k + 1;
while (isValid(i, j, R, C)) {
um[arr[i][j]].push_back(pos);
pos++;
i--;
j++;
}
}
for (int i = 0; i < Q.size(); i++) {
int X = Q[i][0];
int K = Q[i][1];
if (um.find(X) == um.end()
|| um[X].size() < K) {
cout << -1 << "\n";
}
else {
cout << um[X][K - 1] << ", ";
}
}
}
int main()
{
vector<vector<int> > A = { { 1, 4 },
{ 2, 5 } };
vector<vector<int> > Q = { { 4, 1 },
{ 5, 1 },
{ 10, 2 } };
kthOccurrenceOfElement(A, Q);
return 0;
}
0 comments:
Post a Comment