Advertisement
regergr

Untitled

Jan 29th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. program project1;
  2. {$R+}
  3. uses sysutils;
  4. var
  5. n, l, c, t, p, i: integer;
  6. arr, B: array of dword;
  7. D: array [0..255] of integer;
  8.  
  9. procedure LSD(max_length: dword; n: integer);
  10. var l, i, j: integer;
  11. begin
  12.  
  13. for j := 0 to 3 do begin
  14. for i := 0 to 255 do begin
  15. D[i] := 0;
  16. end;
  17. for i := 0 to n - 1 do begin
  18. c := (arr[i] shr (j*8)) and $FF;
  19. D[c] += 1;
  20. end;
  21. t := 0;
  22. for c := 0 to 255 do begin
  23. p := t + D[c];
  24. D[c] := t;
  25. t := p;
  26. end;
  27. for i := 0 to n - 1 do begin
  28. c := (arr[i] shr (j*8)) and $FF;
  29. p := D[c];
  30. B[p] := arr[i];
  31. D[c] := p + 1;
  32. end;
  33. for i := 0 to n - 1 do begin
  34. arr[i] := B[i];
  35. end;
  36.  
  37. end;
  38.  
  39. end;
  40.  
  41. function Max_length(n: integer): dword;
  42. var l: dword;
  43. k: dword;
  44. i: integer;
  45. begin
  46. k := arr[0];
  47. l := 0;
  48. while (k > 1) do begin
  49. k := k div 255;
  50. l += 1;
  51. end;
  52. result := l;
  53. for i := 1 to n - 1 do begin
  54. k := arr[i];
  55. l := 0;
  56. while (k > 1) do begin
  57. k := k div 255;
  58. l += 1;
  59. end;
  60. if (l > result) then begin
  61. result := l;
  62. end;
  63. end;
  64. end;
  65. begin
  66. //assign(input, 'input.txt');
  67. //assign(output, 'output.txt');
  68. //reset(input);
  69. //rewrite(output);
  70. //read(n);
  71. n := 1000000;
  72. SetLength(arr, n);
  73. SetLength(B, n);
  74. for i := 0 to n - 1 do begin
  75. arr[i] := random(1000000);
  76. end;
  77.  
  78. //for i := 0 to n - 1 do begin
  79. // read(arr[i]);
  80. //end;
  81. //l := Max_length(n);
  82. LSD(l, n);
  83. for i := 0 to length(arr) - 1 do begin
  84. writeln(arr[i]);
  85. end;
  86.  
  87. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement