fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. vector<int>arr = {1,1,1,1,2,2,3,3,3,3,6,6,6,6};
  6. int n = arr.size();
  7. int k = 4;
  8.  
  9. int s = 0;
  10. int e = n-1;
  11. while(s<=e){
  12. int mid = s + (e - s)/2;
  13. int x = arr[mid];
  14. int firstOcc = lower_bound(arr.begin(),arr.end(),x) - arr.begin();
  15. int lastOcc = upper_bound(arr.begin(),arr.end(),x) - arr.begin() - 1;
  16. int len = lastOcc - firstOcc + 1;
  17. if(len!=k){
  18. cout<<x;
  19. return 0;
  20. }
  21. else{
  22. if((lastOcc - s + 1) % k == 0){ // answer in right half
  23. s = lastOcc+1;
  24. }
  25. else{
  26. e = firstOcc-1;
  27. }
  28. }
  29. }
  30. return 0;
  31. }
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
2