Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. long long a,b,c,d;
  6.  
  7. string sol;
  8.  
  9. bool solve() {
  10.  
  11. if (a == 0&&b == 0&&c == 0&&d == 0) {
  12. return false;
  13. }
  14.  
  15. long long n = 0;
  16. while ((n * (n + 1)) / 2 < a) n++;
  17. if (n * (n + 1) / 2 != a) {
  18. return false;
  19. }
  20.  
  21. long long m = 0;
  22. while ((m * (m + 1)) / 2 < d) m++;
  23. if (m * (m + 1) / 2 != d) {
  24. return false;
  25. }
  26. if (n || b || c) n++;
  27. if (m || b || c) m++;
  28. if (n * m != b + c) {
  29. return false;
  30. }
  31. long long n1 = n,m1 = m;
  32. sol = "";
  33. if (n != 0) {
  34. for (int i = 0; i < c / n; i++) {
  35. sol += "1";
  36. m1--;
  37. }
  38.  
  39. for (int i = 0; i < n - c % n; i++) {
  40. sol += "0";
  41. n1--;
  42. }
  43. }
  44. if (m1 != 0) {
  45. sol += "1";
  46. m1--;
  47. }
  48. for (int i = 0; i < n1; i++) {
  49. sol += "0";
  50. }
  51. for (int i = 0; i < m1; i++) {
  52. sol += "1";
  53. }
  54.  
  55. return true;
  56. }
  57.  
  58. #define FOR(i, n) for (int i = 0; i < n; i++)
  59. int main() {
  60.  
  61.  
  62.  
  63. scanf("%d%d%d%d", &a, &b, &c, &d);
  64. //a = i; b = j; c = k; d = l;
  65. if (solve()) {
  66. //printf("%d %d %d %d\n", a, b, c, d);
  67. //printf("%s\n", sol.c_str());
  68. int n = sol.size();
  69. FOR(q, n) {
  70. for (int w = q + 1; w < n; w++) {
  71. int prvi = sol[q] == '1';
  72. int drugi = sol[w] == '1';
  73. if (prvi && drugi) d--;
  74. else if (prvi && !drugi) c--;
  75. else if (!prvi && drugi) b--;
  76. else a--;
  77. }
  78. }
  79. //printf("%d %d %d %d\n", a, b, c, d);
  80. if (a || c || b || d) printf("NO\n");
  81. }
  82.  
  83.  
  84. return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement