题面:给出有 n 个元素的由小到大的序列,请你编程找出某元素x第一次出现的位置。 (n<=10^6)
思路:本题是要求用二分查找的思路,本人用的是桶排序...
#include<bits/stdc++.h>
using namespace std;
int s[1010012], s2[1002029], n, k, sum, tmp, cnt = 1;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> tmp;
if (s2[tmp] == 0) {
s[cnt] = tmp;
cnt++;
}
s2[tmp]++;
}
cin >> k;
for (int i = 1; i <= cnt; i++) {
if (s[i] != k)sum += s2[s[i]];
else {
sum++;
cout << sum;
return 0;
}
}
cout << -1;
return 0;
}