fork download
  1. #include<bits/stdc++.h>
  2. #define MAX 1000000
  3. using namespace std;
  4.  
  5. int t, n, k, x, a[MAX];
  6.  
  7. int binarySearch(int left, int right, int x){
  8. if(a[right] <= x){
  9. return right;
  10. }
  11. if(a[left] > x){
  12. return left;
  13. }
  14. int mid = (left + right) / 2;
  15. if(a[mid] <= x && a[mid + 1] > x){
  16. return mid;
  17. }
  18. if(a[mid] < x){
  19. return binarySearch(mid + 1, right, x);
  20. }
  21. return binarySearch(left, mid - 1, x);
  22. }
  23.  
  24. void solve(){
  25. int left = binarySearch(0, n - 1, x);
  26. int right = left + 1;
  27. int count = 0;
  28. if(a[left] == x){
  29. left--;
  30. }
  31. while(left >= 0 && right < n && count < k){
  32. if(x - a[left] <= a[right] - x){
  33. cout << a[left]<<" ";
  34. left--;
  35. }
  36. else{
  37. cout << a[right]<<" ";
  38. right++;
  39. }
  40. count++;
  41. }
  42. while(count < k && left >= 0){
  43. cout << a[left]<<" ";
  44. left--;
  45. count++;
  46. }
  47. while(count < k && right < n){
  48. cout << a[right]<<" ";
  49. right++;
  50. count++;
  51. }
  52. }
  53.  
  54. int main(){
  55. cin >> t;
  56. while(t--){
  57. cin >> n;
  58. for(int i = 0; i < n; i++)
  59. cin >> a[i];
  60. cin >> k >> x;
  61. solve();
  62. cout << endl;
  63. }
  64. return 0;
  65. }
Success #stdin #stdout 0s 4172KB
stdin
Standard input is empty
stdout
Standard output is empty