解題心得
原本left<=right沒有加等號,加上後就過了。
程式碼
#include<iostream> #include<vector> using namespace std; int main() { long long int n, q, x, t; vector<long long int> v; cin >> n >> q; for (int i = 0; i < n; i++) { cin >> x; v.push_back(x); } while (q--) { cin >> t; int left = 0, right = v.size() - 1, mid = (left + right) / 2; bool flag = false; while (left <= right) { if (v[mid] == t) { flag = true; break; } else if (v[mid] < t) { left = mid + 1; } else { right = mid - 1; } mid = (left + right) / 2; } if (flag) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }
沒有留言:
張貼留言