Advertisement
Guest User

Untitled

a guest
May 24th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #include <fstream>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define MAX_N 4000000
  6.  
  7. unsigned v[MAX_N];
  8.  
  9. unsigned quickSelect(int l, int r, int k) {
  10. if (l == r) {
  11. return v[l];
  12. }
  13. int i = l, j = r;
  14. unsigned piv = v[rand() % (r - l + 1) + l];
  15.  
  16. while (i <= j) {
  17. while (v[i] < piv) {
  18. i++;
  19. }
  20. while (v[j] > piv) {
  21. j--;
  22. }
  23. if (i <= j) {
  24. int tmp = v[i];
  25. v[i] = v[j];
  26. v[j] = tmp;
  27. i++;
  28. j--;
  29. }
  30. }
  31. if (k <= (j - l + 1)) {
  32. return quickSelect(l, j, k);
  33. } else {
  34. return quickSelect(j + 1, r, k - (j - l + 1));
  35. }
  36. }
  37.  
  38. int main(void) {
  39. int n, k;
  40. std::fstream f("statisticiordine.in", std::ios::in);
  41.  
  42. f >> n >> k;
  43. for (int i = 0; i < n; i++) {
  44. f >> v[i];
  45. }
  46. f.close();
  47.  
  48. srand(time(0));
  49.  
  50. f.open("statisticiordine.out", std::ios::out);
  51. f << quickSelect(0, n - 1, k) << '\n';
  52. f.close();
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement