fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main(){
  5. long int n, k, x;
  6. cin >> n >> k >> x;
  7. long int arr[n], max, min, min_idx, max_idx;
  8. bool a = true;
  9. for (long int i = 0; i < n; ++i)
  10. {
  11. cin >> arr[i];
  12. }
  13. for (long int i = 0; i < k; ++i)
  14. {
  15. min = INT_MAX;
  16. max = INT_MIN;
  17. min_idx = -1;
  18. max_idx = -1;
  19. for (long int j = 0; j < n; ++j)
  20. {
  21. if(arr[j] < 0)
  22. a = !a;
  23. }
  24. for (long int j = 0; j < n; ++j)
  25. {
  26. if(arr[j] >= 0 && arr[j] < min){
  27. min = arr[j];
  28. min_idx = j;
  29. }
  30. }
  31. for (long int j = 0; j < n; ++j)
  32. {
  33. if(arr[j] < 0 && arr[j] > max){
  34. max = arr[j];
  35. max_idx = j;
  36. }
  37. }
  38. //cout << a << " " << min << " "<< min_idx <<" " << max<< " " <<max_idx ;
  39. if(a){
  40. if(max_idx == -1)
  41. arr[min_idx] -= x;
  42. else{
  43. if(min < ((-1)*max))
  44. arr[min_idx] -= x;
  45. else
  46. arr[max_idx] += x;
  47. }
  48. }
  49. else{
  50. if(min_idx == -1)
  51. arr[max_idx] += x;
  52. else{
  53. if(min < ((-1)*max))
  54. arr[min_idx] += x;
  55. else
  56. arr[max_idx] -= x;
  57. }
  58. }
  59. //cout << '\n';
  60. }
  61.  
  62. for (int i = 0; i < n; ++i)
  63. {
  64. cout << arr[i] << " ";
  65. }
  66. return 0;
  67. }
Success #stdin #stdout 0s 3472KB
stdin
3 2 7
5 4 2
stdout
5 11 -5