# 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 our answer. Input : n = 8, t = 3 BBGBGBGB Output: GGBGBBBB

**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 <bits/stdc++.h>` `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

`<?php` `// PHP program to find ` `// the arrangement of ` `// queue at time = t` ` ` `// prints the arrangement` `// at time = t` `function` `solve(` `$n` `, ` `$t` `, ` `$s` `)` `{` ` ` `// Checking the entire ` ` ` `// queue for every` ` ` `// moment from time = 1` ` ` `// to time = t.` ` ` `for` `(` `$i` `= 0; ` `$i` `< ` `$t` `; ` `$i` `++) ` ` ` `{` ` ` `for` `(` `$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'` `)` ` ` `{` ` ` `$temp` `= ` `$s` `[` `$j` `];` ` ` `$s` `[` `$j` `] = ` `$s` `[` `$j` `+ 1];` ` ` `$s` `[` `$j` `+ 1] = ` `$temp` `;` ` ` `$j` `++;` ` ` `}` ` ` `}` ` ` `} ` ` ` `echo` `(` `$s` `);` `}` ` ` `// Driver code` `$n` `= 6; ` `$t` `= 2;` `$s` `= ` `"BBGBBG"` `;` `solve(` `$n` `, ` `$t` `, ` `$s` `);` ` ` `// This code is contributed by ` `// Manish Shaw(manishshaw1)` `?>` |

**Output:**

GBBGBB