# Find the arrangement of queue at given time

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 Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : parashar, manishshaw1

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.