Advertisement
Old_But_Gold

Untitled

Jan 29th, 2025
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.17 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using AaDS.Combinatorics;
  5.  
  6. // Номер 7
  7. /*var splits = Console.ReadLine()!.Split(" ", StringSplitOptions.RemoveEmptyEntries);
  8. int n = int.Parse(splits[0]);
  9. int k = int.Parse(splits[1]);
  10.  
  11. const int MOD = 998244353;
  12.  
  13. var nums = Console.ReadLine()!.Split().Select(int.Parse).ToArray();
  14.  
  15. var listPairs = GeneratePairs(nums);
  16. int[] pairsSum = listPairs.Select(pair => pair.first + pair.second).ToArray();
  17.  
  18. for (int i = 1; i <= k; i++)
  19. {
  20. long currentSum = 0;
  21. for (int j = 0; j < pairsSum.Length; j++)
  22. {
  23. currentSum += (long)Math.Pow(pairsSum[j], i) % MOD;
  24. }
  25. Console.WriteLine(currentSum % MOD);
  26. }
  27.  
  28. (int first, int second)[] GeneratePairs(IList<int> elements)
  29. {
  30. int count = elements.Count;
  31. List<(int first, int second)> result = new List<(int first, int second)>();
  32.  
  33. for (int i = 0; i < count - 1; i++)
  34. {
  35. for (int j = i + 1; j < count; j++)
  36. {
  37. result.Add((elements[i], elements[j]));
  38. }
  39. }
  40.  
  41. return result.ToArray();
  42. }*/
  43.  
  44. // Номер 6
  45.  
  46. // Ввод данных
  47. /*int n = int.Parse(Console.ReadLine()!);
  48. (int x, int y)[] points = new (int, int)[n];
  49.  
  50. for (int i = 0; i < n; i++)
  51. {
  52. var splits = Console.ReadLine()!.Split(" ", StringSplitOptions.RemoveEmptyEntries);
  53. points[i] = (int.Parse(splits[0]), int.Parse(splits[1]));
  54. }
  55.  
  56. int maxTriangles = 0;
  57. var used = new bool[n]; // Массив для отслеживания использованных точек
  58.  
  59. // Проверка всех троек точек
  60. for (int i = 0; i < n - 2; i++)
  61. {
  62. for (int j = i + 1; j < n - 1; j++)
  63. {
  64. for (int k = j + 1; k < n; k++)
  65. {
  66. if (!used[i] && !used[j] && !used[k] &&
  67. IsNonDegenerate(points[i], points[j], points[k]))
  68. {
  69. used[i] = true;
  70. used[j] = true;
  71. used[k] = true;
  72. maxTriangles++;
  73. }
  74. }
  75. }
  76. }
  77.  
  78. Console.WriteLine(maxTriangles);
  79.  
  80. bool IsNonDegenerate((int x, int y) p1, (int x, int y) p2, (int x, int y) p3)
  81. {
  82. // Вычисляем определитель для трех точек
  83. int det = p1.x * (p2.y - p3.y) + p2.x * (p3.y - p1.y) + p3.x * (p1.y - p2.y);
  84. return det != 0; // Если определитель не равен нулю, то треугольник невырожденный
  85. }*/
  86.  
  87. // Номер 5
  88.  
  89.  
  90. //Номер 4
  91. /*string[] splits = Console.ReadLine()!.Split(" ", StringSplitOptions.RemoveEmptyEntries);
  92.  
  93. int n = int.Parse(splits[0]);
  94. ulong x = ulong.Parse(splits[1]);
  95. ulong y = ulong.Parse(splits[2]);
  96. ulong z = ulong.Parse(splits[3]);
  97.  
  98.  
  99. ulong[] nums = Console.ReadLine()!.Split().Select(ulong.Parse).ToArray();
  100.  
  101. (ulong minX, int index) xTuple = (ulong.MaxValue, -1);
  102. (ulong minY, int index) yTuple = (ulong.MaxValue, -1);
  103. (ulong minZ, int index) zTuple = (ulong.MaxValue, -1);
  104.  
  105. for (int i = 0; i < nums.Length; i++)
  106. {
  107. var diffX = CalculateDifference(nums[i], x);
  108. var diffY = CalculateDifference(nums[i], y);
  109. var diffZ = CalculateDifference(nums[i], z);
  110.  
  111. if (xTuple.minX > diffX)
  112. {
  113. xTuple.minX = diffX;
  114. xTuple.index = i;
  115. }
  116.  
  117. if (yTuple.minY > diffY)
  118. {
  119. yTuple.minY = diffY;
  120. yTuple.index = i;
  121. }
  122.  
  123. if (zTuple.minZ > diffZ)
  124. {
  125. zTuple.minZ = diffZ;
  126. zTuple.index = i;
  127. }
  128. }
  129.  
  130. if (xTuple.index == yTuple.index && yTuple.index == zTuple.index)
  131. {
  132. Console.WriteLine(xTuple.minX);
  133. }
  134. else if (xTuple.index == yTuple.index)
  135. {
  136. Console.WriteLine(xTuple.minX + zTuple.minZ);
  137. }
  138. else if (yTuple.index == zTuple.index)
  139. {
  140. Console.WriteLine(xTuple.minX + yTuple.minY);
  141. }
  142. else if (xTuple.index == zTuple.index)
  143. {
  144. Console.WriteLine(xTuple.minX + yTuple.minY);
  145. }
  146. else
  147. {
  148. Console.WriteLine(xTuple.minX + yTuple.minY + zTuple.minZ);
  149. }
  150.  
  151. ulong CalculateDifference(ulong divider, ulong division)
  152. {
  153. return divider % division > division - (divider % division)
  154. ? division - (divider % division)
  155. : divider % division;
  156. }*/
  157.  
  158. // Номер 3
  159. /*string[] splits = Console.ReadLine()!.Split(" ", StringSplitOptions.RemoveEmptyEntries);
  160.  
  161. int n = int.Parse(splits[0]);
  162. int m = int.Parse(splits[1]);
  163.  
  164. int[] schedule = Console.ReadLine()!.Split().Select(int.Parse).ToArray();
  165. int firstDay = schedule[0];
  166. int secondDay = schedule[1];
  167.  
  168. int minGood = Math.Min(firstDay, secondDay);
  169. int maxGood = Math.Max(firstDay, secondDay);
  170.  
  171. int goodDays = 0;
  172. int changes = 0;
  173.  
  174. int[] adjustments = new int[n];
  175.  
  176. for (int i = 2; i < n; i++)
  177. {
  178. var currentTime = schedule[i];
  179. if (currentTime >= minGood && currentTime <= maxGood)
  180. {
  181. goodDays++;
  182. }
  183. else
  184. {
  185. if (currentTime < minGood)
  186. adjustments[i] = minGood - currentTime;
  187. else
  188. adjustments[i] = currentTime - maxGood;
  189. }
  190. }
  191.  
  192. if (goodDays >= m)
  193. {
  194. Console.WriteLine(0);
  195. return;
  196. }
  197.  
  198. Array.Sort(adjustments);
  199.  
  200. for (int i = 0; i < n && goodDays < m; i++)
  201. {
  202. if (adjustments[i] > 0)
  203. {
  204. changes += adjustments[i];
  205. goodDays++;
  206. }
  207. }
  208.  
  209. Console.WriteLine(changes);*/
  210.  
  211. // Номер 2
  212. /*int n = int.Parse(Console.ReadLine()!);
  213.  
  214. ulong[] days = new ulong[n];
  215.  
  216. for (int i = 0; i < days.Length; i++)
  217. {
  218. days[i] = ulong.Parse(Console.ReadLine()!);
  219. var powers = GetPowersOfTwo(days[i]);
  220.  
  221. if (powers.Count < 3)
  222. {
  223. Console.WriteLine(-1);
  224. }
  225. else
  226. {
  227. Console.WriteLine(powers[0] + powers[1] + powers[2]);
  228. }
  229. }
  230.  
  231. List<ulong> GetPowersOfTwo(ulong budget)
  232. {
  233. List<ulong> powers = new List<ulong>();
  234.  
  235. for (int i = 63; i > -1; i--)
  236. {
  237. ulong power = 1UL << i;
  238. if (budget >= power)
  239. {
  240. powers.Add(power);
  241. budget -= power;
  242. }
  243. }
  244.  
  245. return powers;
  246. }*/
  247.  
  248. // Номер 1
  249. /*
  250. Dictionary<char, int> dictionary = new Dictionary<char, int>();
  251.  
  252. string s = Console.ReadLine()!;
  253.  
  254. for (int i = 0; i < s.Length; i++)
  255. {
  256. dictionary[s[i]] = i;
  257. }
  258.  
  259. Console.WriteLine(dictionary['R'] < dictionary['M'] ? "Yes" : "No");
  260. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement