Unique Bid Auction
Hazrat Ali
Let's simplify this game a bit. Formally, there are nn participants, the ii-th participant chose the number ai. The winner of the game is such a participant that the number he chose is unique (i. e. nobody else chose this number except him) and is minimal (i. e. among all unique values of a the minimum one is the winning one).
Your task is to find the index of the participant who won the game (or -1 if there is no winner). Indexing is 1-based, i. e. the participants are numbered from 1 to nn.
You have to answer t independent test cases.
The first line of the input contains one integer t (1≤t≤2) — the number of test cases. Then t test cases follow.
The first line of the test case contains one integer nn (1≤n≤2⋅105) — the number of participants. The second line of the test case contains nn integers a1,a2,…,an (1≤ai≤n1≤ai≤n), where ai is the i-th participant chosen number.
It is guaranteed that the sum of nn does not exceed 2⋅1052⋅105 (∑n≤2⋅105).
For each test case, print the answer — the index of the participant who won the game (or -1 if there is no winner). Note that the answer is always unique.
6 2 1 1 3 2 1 3 4 2 2 2 3 1 1 5 2 3 2 4 2 6 1 1 5 5 4 4
-1 2 4 1 2
-1
Solution
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
map<int, int> memo, pos;
for (int i = 0; i < n; i++)
{
int a;
cin >> a;
memo[a]++;
pos[a] = i;
}
int ans = -1;
for (auto [num, cnt]: memo)
{
if (cnt == 1)
{
ans = pos[num] + 1;
break;
}
}
cout << ans << endl;
}
return 0;
}