Related Articles
Find the arrangement of queue at given time
• Difficulty Level : Basic
• Last Updated : 09 Nov, 2020

n people are standing in a queue to buy entry ticket for the carnival. People present there strongly believe in chivalry. Therefore, at time = t, if a man at position x, finds a woman standing behind him then he exchanges his position with her and therefore, at time = t+1, woman is standing at position x while man is standing behind her.
Given the total number of people standing in a queue as n, particular instant of time as t and the initial arrangement of the queue in the form of a string containing ‘M’ representing man at position i and ‘W’ representing woman is at position i, find out the arrangement of the queue at time = t.

Examples :

```Input : n = 6, t = 2
BBGBBG
Output: GBBGBB
Explanation:
At t = 1, 'B' at position 2 will swap
with 'G' at position 3 and 'B' at
position 5 will swap with 'G' at
position 6. String after t = 1 changes
to "BGBBGB". Now at t = 2, 'B' at
position = 1 will swap with 'G' at
position = 2 and 'B' at position = 4
will swap with 'G' at position 5.
String changes to "GBBGBB". Since,
we have to display arrangement at
t = 2, the current arrangement is

Input : n = 8, t = 3
BBGBGBGB
Output: GGBGBBBB
```

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

Approach:
Traverse the entire string at every moment of time from 1 to t and if we find pairwise “BG” then swap them and move to check the next pair.

Below is the implementation of above approach:

## C++

 `// CPP program to find the arrangement ` `// of queue at time = t ` `#include ` `using` `namespace` `std; ` ` `  `// prints the arrangement at time = t ` `void` `solve(``int` `n, ``int` `t, string s) ` `{ ` `    ``// Checking the entire queue for  ` `    ``// every moment from time = 1 to ` `    ``// time = t. ` `    ``for` `(``int` `i = 0; i < t; i++)  ` `        ``for` `(``int` `j = 0; j < n - 1; j++)  ` `         `  `            ``/*If current index contains 'B'  ` `              ``and next index contains 'G'  ` `              ``then swap*/` `            ``if` `(s[j] == ``'B'` `&& s[j + 1] == ``'G'``) { ` `                ``char` `temp = s[j]; ` `                ``s[j] = s[j + 1]; ` `                ``s[j + 1] = temp; ` `                ``j++; ` `            ``} ` `             `  `    ``cout << s; ` `} ` ` `  `// Driver function for the program ` `int` `main() ` `{ ` `    ``int` `n = 6, t = 2; ` `    ``string s = ``"BBGBBG"``; ` `    ``solve(n, t, s); ` `    ``return` `0; ` `} `

## Java

 `// Java program to find the arrangement ` `// of queue at time = t ` `import` `java.io.*; ` ` `  `class` `Geek { ` `     `  `    ``// prints the arrangement at time = t ` `    ``static` `void` `solve(``int` `n, ``int` `t, ``char` `s[]) ` `    ``{ ` `        ``// Checking the entire queue for  ` `        ``// every moment from time = 1 to  ` `        ``// time = t. ` `        ``for` `(``int` `i = ``0``; i < t; i++)  ` `            ``for` `(``int` `j = ``0``; j < n - ``1``; j++)  ` `             `  `                ``/*If current index contains 'B'  ` `                  ``and next index contains 'G'  ` `                  ``then swap.*/` `                ``if` `(s[j] == ``'B'` `&& s[j + ``1``] == ``'G'``) { ` `                    ``char` `temp = s[j]; ` `                    ``s[j] = s[j + ``1``]; ` `                    ``s[j + ``1``] = temp; ` `                    ``j++; ` `                ``} ` `                 `  `        ``System.out.print(s); ` `    ``} ` `     `  `    ``// Driver function ` `    ``public` `static` `void` `main(String args[]) ` `    ``{ ` `        ``int` `n = ``6``, t = ``2``; ` `        ``String s = ``"BBGBBG"``; ` `        ``char` `str[] = s.toCharArray(); ` `        ``solve(n, t, str); ` `    ``} ` `} `

## Python3

 `# Python program to find  ` `# the arrangement of  ` `# queue at time = t ` ` `  `# prints the arrangement ` `# at time = t ` `def` `solve(n, t, p) : ` `     `  `    ``s ``=` `list``(p) ` `     `  `    ``# Checking the entire  ` `    ``# queue for every ` `    ``# moment from time = 1 ` `    ``# to time = t. ` `    ``for` `i ``in` `range``(``0``, t) : ` `     `  `        ``for` `j ``in` `range``(``0``, n ``-` `1``) :      ` `         `  `            ``# If current index  ` `            ``# contains 'B' and ` `            ``# next index contains  ` `            ``# 'G' then swap ` `            ``if` `(s[j] ``=``=` `'B'` `and` `                ``s[j ``+` `1``] ``=``=` `'G'``) : ` `                 `  `                ``temp ``=` `s[j]; ` `                ``s[j] ``=` `s[j ``+` `1``]; ` `                ``s[j ``+` `1``] ``=` `temp; ` `                ``j ``=` `j ``+` `1`     `                 `  `    ``print` `(''.join(s)) ` ` `  `# Driver code ` `n ``=` `6` `t ``=` `2` `p ``=` `"BBGBBG"` `solve(n, t, p) ` ` `  `# This code is contributed by  ` `# Manish Shaw(manishshaw1) `

## C#

 `// C# program to find the arrangement ` `// of queue at time = t ` `using` `System; ` ` `  `class` `Geek { ` `     `  `    ``// prints the arrangement at time = t ` `    ``static` `void` `solve(``int` `n, ``int` `t, ``char``[] s) ` `    ``{ ` `        ``// Checking the entire queue for  ` `        ``// every moment from time = 1 to  ` `        ``// time = t. ` `        ``for` `(``int` `i = 0; i < t; i++)  ` `            ``for` `(``int` `j = 0; j < n - 1; j++)  ` `             `  `                ``/*If current index contains 'B'  ` `                ``and next index contains 'G'  ` `                ``then swap.*/` `                ``if` `(s[j] == ``'B'` `&& s[j + 1] == ``'G'``)  ` `                ``{ ` `                    ``char` `temp = s[j]; ` `                    ``s[j] = s[j + 1]; ` `                    ``s[j + 1] = temp; ` `                    ``j++; ` `                ``} ` `                 `  `        ``Console.Write(s); ` `    ``} ` `     `  `    ``// Driver function ` `    ``public` `static` `void` `Main(String[] args) ` `    ``{ ` `        ``int` `n = 6, t = 2; ` `        ``String s = ``"BBGBBG"``; ` `        ``char` `[]str = s.ToCharArray(); ` `        ``solve(n, t, str); ` `    ``} ` `} ` ` `  `// This code is contributed by parashar... `

## PHP

 ` `

Output:

```GBBGBB
``` My Personal Notes arrow_drop_up
Recommended Articles
Page :