AOJの問題、ALDS1_4_Bに対して、以下のコードを書きましたが、テストケース10でTLE(Time Limit Exceeded)になってしまします。計算量はO(qlogn)で収まっていると思うのですが、なぜTLEになってしまうのでしょうか?
C++
1#include <bits/stdc++.h> 2using namespace std; 3 4bool binarySearchJudge(vector<int> a, int index, int key) 5{ 6 if (key <= a[index]) return true; 7 else return false; 8} 9 10int binarySearch(vector<int> a, int key) 11{ 12 int ng = -1; 13 int ok = a.size(); 14 while (1 < abs(ng - ok)) 15 { 16 int mid = (ng + ok) / 2; 17 if (binarySearchJudge(a, mid, key)) ok = mid; 18 else ng = mid; 19 } 20 return a[ok] == key; 21} 22 23int main() 24{ 25 int n; 26 cin >> n; 27 vector<int> s(n); 28 for (int i = 0; i < n; i++) 29 { 30 cin>>s[i]; 31 } 32 33 int q; 34 cin >> q; 35 int ans = 0; 36 for (int i = 0; i < q; i++) 37 { 38 int t; 39 cin>>t; 40 if (binarySearch(s, t)) ans++; 41 } 42 cout << ans << endl; 43} 44
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/06 00:10