Advertisement
desislava_topuzakova

Untitled

Dec 29th, 2022
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. class ThreeFriends
  6. {
  7. static void Main()
  8. {
  9. int n = int.Parse(Console.ReadLine());
  10. for (int i = 0; i < n; i++)
  11. {
  12. int[] nums = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
  13. Console.WriteLine(Check3Partitions(nums) ? "Yes" : "No");
  14. }
  15. }
  16.  
  17. static bool Check3Partitions(int[] nums)
  18. {
  19. int totalSum = nums.Sum();
  20. if (totalSum % 3 != 0)
  21. {
  22. return false;
  23. }
  24.  
  25. int targetSum = totalSum / 3;
  26. var sumReached = new bool[targetSum + 1, targetSum + 1];
  27.  
  28. sumReached[0, 0] = true;
  29. foreach (short num in nums)
  30. {
  31. for (int s1 = targetSum; s1 >= 0; s1--)
  32. {
  33. for (int s2 = targetSum; s2 >= 0; s2--)
  34. {
  35. if (sumReached[s1, s2])
  36. {
  37. if (s1 + num <= targetSum && !sumReached[s1 + num, s2])
  38. {
  39. sumReached[s1 + num, s2] = true;
  40. }
  41. if (s2 + num <= targetSum && !sumReached[s1, s2 + num])
  42. {
  43. sumReached[s1, s2 + num] = true;
  44. }
  45. }
  46. }
  47. }
  48. }
  49.  
  50. bool possible = sumReached[targetSum, targetSum];
  51.  
  52. return possible;
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement