Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 KB | None | 0 0
  1. class Program
  2. {
  3. #region Utils
  4. static bool PressAnyKey() { if (Console.ReadKey().Key == ConsoleKey.N) return false; return false; }
  5. static void Pass(int n) { for (int i = 0; i < n; ++i) Console.WriteLine(); }
  6. static void Swap(ref int a, ref int b) { int buffer = a; a = b; b = buffer; }
  7. unsafe static void Swap(int* a, int* b) { int buffer = *a; *a = *b; *b = buffer; }
  8.  
  9. unsafe static void InsertSort(int*[] a, int size)
  10. {
  11. for (int i = 0; i < size; ++i)
  12. {
  13. var vjuh = i - 1;
  14. var buffer = *a[i];
  15. while (vjuh >= 0 && buffer < *a[vjuh])
  16. {
  17. *a[vjuh + 1] = *a[vjuh];
  18. --vjuh;
  19. }
  20. *a[vjuh + 1] = buffer;
  21. }
  22. }
  23.  
  24. unsafe static void SelectSort(int*[] a, int size)
  25. {
  26. for (int i = 0; i < size; ++i)
  27. {
  28. int *Min = a[i];
  29. for (int j = i; j < size; ++j)
  30. {
  31. if (*Min > *a[j])
  32. Min = a[j];
  33. }
  34. Swap(Min, a[i]);
  35. }
  36. }
  37. #endregion
  38.  
  39. static bool Check(int[] a, int[] b)
  40. {
  41. var size = a.Count() == b.Count() ? a.Count() : 0;
  42.  
  43. if (size == 0)
  44. return false;
  45.  
  46. for (int i = 0; i < size; ++i)
  47. {
  48. if (a[i] != b[i])
  49. return false;
  50. }
  51.  
  52. return true;
  53. }
  54.  
  55. static void No2()
  56. {
  57. #region Init
  58. var arr = new int[7, 4];
  59. var rand = new Random();
  60.  
  61. for (int j = 0; j < 3; ++j)
  62. {
  63. for (int i = 0; i < 7; ++i)
  64. {
  65. arr[i, j] = rand.Next(81);
  66. Console.Write($"{arr[i, j]} ");
  67. }
  68. Console.WriteLine();
  69. }
  70. Pass(2);
  71. #endregion
  72.  
  73. for (int i = 0; i < 7; ++i)
  74. {
  75. int mod3 = 0;
  76.  
  77. for (int j = 0; j < 3; ++j)
  78. {
  79. if (arr[i, j] % 3 == 0)
  80. {
  81. ++mod3;
  82. }
  83. }
  84. arr[i, 3] = mod3;
  85. }
  86.  
  87. for (int i = 0; i < 7; ++i)
  88. {
  89. for (int j = 0; j < 6 - i; ++j)
  90. {
  91. if (arr[j, 3] > arr[j + 1, 3])
  92. {
  93. for (int k = 0; k < 4; ++k)
  94. {
  95. Swap(ref arr[j, k], ref arr[j + 1, k]);
  96. }
  97. }
  98. }
  99. }
  100.  
  101. #region Write Result
  102. for (int j = 0; j < 4; ++j)
  103. {
  104. for (int i = 0; i < 7; ++i)
  105. {
  106. Console.Write($"{arr[i, j]}\t");
  107. }
  108. Console.WriteLine();
  109. }
  110. #endregion
  111. }
  112.  
  113. unsafe static void No1()
  114. {
  115. #region Init
  116. var m = int.Parse(Console.ReadLine());
  117. var n = int.Parse(Console.ReadLine());
  118. var rand = new Random();
  119. var arr = new int[m, n];
  120. var firstLine = new int[m];
  121.  
  122. for (int i = 0; i < m; ++i)
  123. {
  124. for (int j = 0; j < n; ++j)
  125. {
  126. arr[i, j] = rand.Next(31);
  127. }
  128. }
  129.  
  130. #endregion
  131.  
  132. for (int i = 0; i < n; ++i)
  133. {
  134. var pArr = new int*[m];
  135. for (int j = 0; j < m; ++j)
  136. {
  137. fixed (int* pBuff = &arr[j, i]) { pArr[j] = pBuff; };
  138. }
  139. SelectSort(pArr, m);
  140. }
  141.  
  142. for (int i = 0; i < m; ++i)
  143. {
  144. firstLine[i] = arr[i, 0];
  145. }
  146.  
  147. int EqualsLine = 0;
  148. for (int i = 1; i < n; ++i)
  149. {
  150. var checkLine = new int[m];
  151. for (int j = 0; j < m; ++j)
  152. {
  153. checkLine[j] = arr[j, i];
  154. }
  155. if (Check(firstLine, checkLine))
  156. ++EqualsLine;
  157. }
  158.  
  159. #region Write Result
  160. for (int i = 0; i < n; ++i)
  161. {
  162. for (int j = 0; j < m; ++j)
  163. {
  164. Console.Write($"{arr[j, i]} ");
  165. }
  166. Console.WriteLine();
  167. }
  168. Console.WriteLine($"EqualsLine = {EqualsLine}");
  169. #endregion
  170. }
  171.  
  172. unsafe static void Main(string[] args)
  173. {
  174. No1();
  175.  
  176. PressAnyKey();
  177. }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement