vlatkovski

Polica

Aug 27th, 2016
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. //you have no idea how much time it took me to optimize this so it can take an input of 500 000 values and still finish in less than a second
  2.  
  3. #include <iostream>
  4. #include <algorithm>
  5.  
  6. struct element {
  7.     int value;
  8.     int x_index;
  9. };
  10.  
  11. bool sort_ascend(element i, element j) {
  12.     return i.value < j.value;
  13. }
  14.  
  15. bool sort_descend(element i, element j) {
  16.     return i.value > j.value;
  17. }
  18.  
  19. int main() {
  20.     int n, k;
  21.     std::cin >> n >> k;
  22.  
  23.     int x[n]; //knigi
  24.     element xm[n]; //knigi, malo->golemo
  25.     element xg[n]; //knigi, golemo->malo
  26.  
  27.     for (int i = 0; i < n; i++) {
  28.         int z;
  29.         std::cin >> z;
  30.  
  31.         x[i] = z;
  32.  
  33.         element e = {z, i};
  34.         xm[i] = e;
  35.         xg[i] = e;
  36.     }
  37.  
  38.     std::sort(xm, xm + n, sort_ascend);
  39.     std::sort(xg, xg + n, sort_descend);
  40.  
  41.     for (int i = k - 1; i >= 0; i--) {
  42.         x[xm[i].x_index] = xg[i].value;
  43.         x[xg[i].x_index] = xm[i].value;
  44.         //std::cout << "zameniv " << xm[i].value << " so " << xg[i].value << std::endl;
  45.     }
  46.  
  47.     for (int i = 0; i < n; i++) std::cout << x[i] << " ";
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment