Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. long long logs[10];
  8. unsigned int cur;
  9. unsigned int a, b;
  10. long long ans;
  11.  
  12. unsigned int nextRand24() {
  13. cur = cur * a + b;
  14. return cur >> 8;
  15. }
  16.  
  17. unsigned int nextRand32() {
  18. unsigned int a = nextRand24(), b = nextRand24();
  19. return (a << 8) ^ b;
  20. }
  21.  
  22. void countSort(long long lol[], int n, int it) {
  23. long long out[n];
  24. long long i, c[8] = {0};
  25. for (i = 0; i < n; i++)
  26. c[(lol[i]>>it) & 7]++;
  27. for (i = 1; i < 8; i++)
  28. c[i] += c[i - 1];
  29. for (i = n - 1; i >= 0; i--) {
  30. out[c[(lol[i]>>it) & 7] - 1] = lol[i];
  31. c[(lol[i]>>it) & 7]--;
  32. }
  33. for (i = 0; i < n; i++)
  34. lol[i] = out[i];
  35. }
  36.  
  37. void radixsort(long long lol[], int n) {
  38. long long maxi = -1e9;
  39. int i;
  40. for (i = 0; i < n; i++) {
  41. if (lol[i] > maxi) maxi = lol[i];
  42. }
  43. i = 3 * (lower_bound(logs, logs + 10, maxi) - logs + 1);
  44. for (int it = 0; it < i; it += 3)
  45. countSort(lol, n, it);
  46. }
  47.  
  48. int main() {
  49. //freopen("input.in", "r", stdin);
  50. //freopen("out.out", "w", stdout);
  51. int t, n;
  52. cin >> t >> n;
  53. long long kek[n];
  54. logs[0] = 1;
  55. for (int i = 1; i < 10; i++) logs[i] = logs[i - 1]<<3;
  56. for (int i = 0; i < t; i++) {
  57. cin >> a >> b;
  58. for (int j = 0; j < n; j++) kek[j] = nextRand32();
  59. radixsort(kek, n);
  60. ans = 0;
  61. for (int j = 0; j < n; j++) ans += (j + 1) * kek[j];
  62. cout << ans << '\n';
  63. }
  64. return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement