fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int ternarySearch(int l, int r, int key, vector<int> ar)
  5. {
  6. if (r >= l) {
  7. int mid1 = l + (r - l) / 3;
  8. int mid2 = r - (r - l) / 3;
  9. if (ar[mid1] == key) {
  10. return mid1;
  11. }
  12. if (ar[mid2] == key) {
  13. return mid2;
  14. }
  15. if (key < ar[mid1]) {
  16. return ternarySearch(l, mid1 - 1, key, ar);
  17. }
  18. else if (key > ar[mid2]) {
  19. return ternarySearch(mid2 + 1, r, key, ar);
  20. }
  21. else {
  22. return ternarySearch(mid1 + 1, mid2 - 1, key, ar);
  23. }
  24. }
  25. return -1;
  26. }
  27. int main()
  28. {
  29. int n; cin >> n;
  30. vector<int> a(n);
  31. for(int i=0; i<n; i++){
  32. cin >> a[i];
  33. }
  34. cout << ternarySearch(0, n-1, 5, a);
  35. }
  36.  
Success #stdin #stdout 0.01s 5288KB
stdin
5
1 2 3 4 5
stdout
4