CF:706B. Interesting drink (二分查詢)
阿新 • • 發佈:2020-07-14
題意:不同奶茶店裡同樣的奶茶價格不同,問在當天Yuki持有的零錢能在幾家店購買
思路:對價格陣列排序,先優先判斷是否會比較最大值和最小值,然後二分查詢
#include<bits/stdc++.h> using namespace std; int main() { int n, q, m, a[100005]; cin >> n; for (int i = 1; i <= n; ++i)cin >> a[i]; sort(a + 1, a + 1 + n);//可以改用qsort,效率更高點 cin >> q; while (q--) { cin >> m; //比較最大最小值 if (m < a[1])cout << 0 << endl; else if (m >= a[n])cout << n << endl; else { int left = 1, right = n; int mid, ans; while (left <= right) { mid = (left + right) / 2; if (a[mid] <= m) { ans = mid; left = mid + 1; } else right = mid - 1; } cout << ans << endl; } } }