# Print n 0s and m 1s such that no two 0s and no three 1s are together

Given two integers n and m where n is the number of 0s and m is the number of 1s. The task is to print all the 0s and 1s in a single row such that no two 0s are together and no three 1s are together. If it’s not possible to arrange 0s and 1s according to the condition then print -1.

Examples:

Input: n = 1, m = 2
Output: 011

Input: n = 4, m = 8
Output: 110110110101

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: We have answers only when, ( (n – 1) ≤ m and m ≤ 2 * (n + 1).

• If (m == n – 1) then print the pattern 010101… starting from 0 until all the 0s and 1s have been used.
• If (m > n) and m ≤ 2 * (n + 1) then print the pattern 110110110… until there is escessive 1s and change to pattern 0101010… when m becomes equal to n – 1.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to print the required pattern ` `void` `printPattern(``int` `n, ``int` `m) ` `{ ` ` `  `    ``// When condition fails ` `    ``if` `(m > 2 * (n + 1) || m < n - 1) { ` `        ``cout << ``"-1"``; ` `    ``} ` ` `  `    ``// When m = n - 1 ` `    ``else` `if` `(``abs``(n - m) <= 1) { ` `        ``while` `(n > 0 && m > 0) { ` `            ``cout << ``"01"``; ` `            ``n--; ` `            ``m--; ` `        ``} ` `        ``if` `(n != 0) { ` `            ``cout << ``"0"``; ` `        ``} ` `        ``if` `(m != 0) { ` `            ``cout << ``"1"``; ` `        ``} ` `    ``} ` `    ``else` `{ ` `        ``while` `(m - n > 1 && n > 0) { ` `            ``cout << ``"110"``; ` `            ``m = m - 2; ` `            ``n = n - 1; ` `        ``} ` `        ``while` `(n > 0) { ` `            ``cout << ``"10"``; ` `            ``n--; ` `            ``m--; ` `        ``} ` `        ``while` `(m > 0) { ` `            ``cout << ``"1"``; ` `            ``m--; ` `        ``} ` `    ``} ` `} ` ` `  `// Driver program ` `int` `main() ` `{ ` `    ``int` `n = 4, m = 8; ` `    ``printPattern(n, m); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation of the above approach  ` `class` `GFG  ` `{  ` `    ``// Function to print the required pattern  ` `    ``static` `void` `printPattern(``int` `n, ``int` `m)  ` `    ``{  ` `        ``// When condition fails  ` `        ``if` `(m > ``2` `* (n + ``1``) || m < n - ``1``)  ` `        ``{  ` `            ``System.out.print(``"-1"``);  ` `        ``}  ` `         `  `        ``// When m = n - 1  ` `        ``else` `if` `(Math.abs(n - m) <= ``1``)  ` `        ``{  ` `            ``while` `(n > ``0` `&& m > ``0``)  ` `            ``{  ` `                ``System.out.print(``"01"``);  ` `                ``n--;  ` `                ``m--;  ` `                 `  `            ``}  ` `            ``if` `(n != ``0``)  ` `            ``{  ` `                ``System.out.print(``"0"``);  ` `            ``}  ` `            ``if` `(m != ``0``)  ` `            ``{  ` `                ``System.out.print(``"1"``);  ` `            ``} ` `        ``}  ` `        ``else` `        ``{  ` `            ``while` `(m - n > ``1` `&& n > ``0``)  ` `            ``{  ` `                ``System.out.print(``"110"``);  ` `                ``m = m - ``2``;  ` `                ``n = n - ``1``;  ` `            ``}  ` `            ``while` `(n > ``0``)  ` `            ``{  ` `                ``System.out.print(``"10"``);  ` `                ``n--;  ` `                ``m--;  ` `            ``}  ` `            ``while` `(m > ``0``)  ` `            ``{  ` `                ``System.out.print(``"1"``);  ` `                ``m--;  ` `            ``}  ` `        ``}  ` `    ``}  ` ` `  `    ``// Driver code  ` `    ``public` `static` `void` `main(String []args)  ` `    ``{  ` `        ``int` `n = ``4``, m = ``8``;  ` `        ``printPattern(n, m);  ` `    ``}  ` `}  ` ` `  `// This code is contributed by Ita_c. `

## Python3

 `# Python 3 implementation of the approach ` ` `  `# Function to print the required pattern ` `def` `printPattern(n, m): ` `     `  `    ``# When condition fails ` `    ``if` `(m > ``2` `*` `(n ``+` `1``) ``or` `m < n ``-` `1``): ` `        ``print``(``"-1"``, end ``=` `"") ` ` `  `    ``# When m = n - 1 ` `    ``elif` `(``abs``(n ``-` `m) <``=` `1``): ` `        ``while` `(n > ``0` `and` `m > ``0``): ` `            ``print``(``"01"``, end ``=` `""); ` `            ``n ``-``=` `1` `            ``m ``-``=` `1` `         `  `        ``if` `(n !``=` `0``): ` `            ``print``(``"0"``, end ``=` `"") ` `        ``if` `(m !``=` `0``): ` `            ``print``(``"1"``, end ``=` `"") ` `    ``else``: ` `        ``while` `(m ``-` `n > ``1` `and` `n > ``0``): ` `            ``print``(``"110"``, end ``=` `"") ` `            ``m ``=` `m ``-` `2` `            ``n ``=` `n ``-` `1` `         `  `        ``while` `(n > ``0``): ` `            ``print``(``"10"``, end ``=` `"") ` `            ``n ``-``=` `1` `            ``m ``-``=` `1` `         `  `        ``while` `(m > ``0``): ` `            ``print``(``"1"``, end ``=` `"") ` `            ``m ``-``=` `1` `     `  `# Driver Code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``n ``=` `4` `    ``m ``=` `8` `    ``printPattern(n, m) ` ` `  `# This code is contributed by ` `# Surendra_Gangwar `

## C#

 `// C# implementation of the above approach  ` `using` `System; ` ` `  `class` `GFG  ` `{  ` `    ``// Function to print the required pattern  ` `    ``static` `void` `printPattern(``int` `n, ``int` `m)  ` `    ``{  ` `        ``// When condition fails  ` `        ``if` `(m > 2 * (n + 1) || m < n - 1)  ` `        ``{  ` `            ``Console.Write(``"-1"``);  ` `        ``}  ` `        ``// When m = n - 1  ` `        ``else` `if` `(Math.Abs(n - m) <= 1)  ` `        ``{  ` `            ``while` `(n > 0 && m > 0)  ` `            ``{  ` `                ``Console.Write(``"01"``);  ` `                ``n--;  ` `                ``m--;  ` `                 `  `            ``}  ` `            ``if` `(n != 0)  ` `            ``{  ` `                ``Console.Write(``"0"``);  ` `            ``}  ` `            ``if` `(m != 0)  ` `            ``{  ` `                ``Console.Write(``"1"``);  ` `            ``} ` `        ``}  ` `        ``else`  `        ``{  ` `            ``while` `(m - n > 1 && n > 0)   ` `            ``{  ` `                ``Console.Write(``"110"``);  ` `                ``m = m - 2;  ` `                ``n = n - 1;  ` `            ``}  ` `            ``while` `(n > 0)  ` `            ``{  ` `                ``Console.Write(``"10"``);  ` `                ``n--;  ` `                ``m--;  ` `            ``}  ` `            ``while` `(m > 0)  ` `            ``{  ` `                ``Console.Write(``"1"``);  ` `                ``m--;  ` `            ``}  ` `        ``}  ` `    ``}  ` ` `  `    ``// Driver code  ` `    ``public` `static` `void` `Main()  ` `    ``{  ` `        ``int` `n = 4, m = 8;  ` `        ``printPattern(n, m);  ` `    ``}  ` `}  ` ` `  `// This code is contributed by Ryuga `

## PHP

2 * (\$n + 1) || \$m < \$n - 1) { echo("-1"); } // When m = n - 1 else if (abs(\$n - \$m) <= 1) { while (\$n > 0 && \$m > 0)
{
System.out.print(“01”);
\$n–;
\$m–;

}
if (\$n != 0)
{
echo(“0”);
}
if (\$m != 0)
{
echo(“1”);
}
}
else
{
while (\$m – \$n > 1 && \$n > 0)
{
echo(“110”);
\$m = \$m – 2;
\$n = \$n – 1;
}
while (\$n > 0)
{
echo(“10”);
\$n–;
\$m–;
}
while (\$m > 0)
{
echo(“1”);
\$m–;
}
}
}

// Driver code
\$n = 4; \$m = 8;
printPattern(\$n, \$m);

// This code is contributed by
// Mukul Singh.
?>

Output:

```110110110101
```

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.