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
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up