Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- long long a,b,c,d;
- string sol;
- bool solve() {
- if (a == 0&&b == 0&&c == 0&&d == 0) {
- return false;
- }
- long long n = 0;
- while ((n * (n + 1)) / 2 < a) n++;
- if (n * (n + 1) / 2 != a) {
- return false;
- }
- long long m = 0;
- while ((m * (m + 1)) / 2 < d) m++;
- if (m * (m + 1) / 2 != d) {
- return false;
- }
- if (n || b || c) n++;
- if (m || b || c) m++;
- if (n * m != b + c) {
- return false;
- }
- long long n1 = n,m1 = m;
- sol = "";
- if (n != 0) {
- for (int i = 0; i < c / n; i++) {
- sol += "1";
- m1--;
- }
- for (int i = 0; i < n - c % n; i++) {
- sol += "0";
- n1--;
- }
- }
- if (m1 != 0) {
- sol += "1";
- m1--;
- }
- for (int i = 0; i < n1; i++) {
- sol += "0";
- }
- for (int i = 0; i < m1; i++) {
- sol += "1";
- }
- return true;
- }
- #define FOR(i, n) for (int i = 0; i < n; i++)
- int main() {
- scanf("%d%d%d%d", &a, &b, &c, &d);
- //a = i; b = j; c = k; d = l;
- if (solve()) {
- //printf("%d %d %d %d\n", a, b, c, d);
- //printf("%s\n", sol.c_str());
- int n = sol.size();
- FOR(q, n) {
- for (int w = q + 1; w < n; w++) {
- int prvi = sol[q] == '1';
- int drugi = sol[w] == '1';
- if (prvi && drugi) d--;
- else if (prvi && !drugi) c--;
- else if (!prvi && drugi) b--;
- else a--;
- }
- }
- //printf("%d %d %d %d\n", a, b, c, d);
- if (a || c || b || d) printf("NO\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement