Find the arrangement of queue at given time

27 May, 2022
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
 
Chapters
descriptions off, selected
captions settings, opens captions settings dialog
captions off, selected
English
This is a modal window.
Beginning of dialog window. Escape will cancel and close the window.
End of dialog window.
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++
Java
Python3
C#
PHP
Javascript
// CPP program to find the arrangement// of queue at time = t#include <bits/stdc++.h>using namespace std; // prints the arrangement at time = tvoid 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 programint main(){    int n = 6, t = 2;    string s = "BBGBBG";    solve(n, t, s);    return 0;}
// Java program to find the arrangement// of queue at time = timport 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);    }}
# Python program to find# the arrangement of# queue at time = t # prints the arrangement# at time = tdef 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 coden = 6t = 2p = "BBGBBG"solve(n, t, p) # This code is contributed by# Manish Shaw(manishshaw1)
// C# program to find the arrangement// of queue at time = tusing 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 program to find// the arrangement of// queue at time = t // prints the arrangement// at time = tfunction 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)?>
<script>// Javascript program to find the arrangement// of queue at time = t // prints the arrangement at time = tfunction solve( n, t, st){    // Checking the entire queue for    // every moment from time = 1 to    // time = t.    let s = st.split('');    for (var i = 0; i < t; i++)        for (var 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') {                var temp = s[j];                s[j] = s[j + 1];                s[j + 1] = temp;                j++;            }                 document.write(s.join(''));} // Driver function for the programvar n = 6, t = 2;var s = "BBGBBG";solve(n, t, s); //This code is contributed by Shubham Singh</script>
Output:  
GBBGBB
Time Complexity: O(n*t) Auxiliary Space: O(1)
Find the arrangement of queue at given time | GeeksforGeeks - YouTubeGeeksforGeeks532K subscribersFind the arrangement of queue at given time | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.You're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmMore videosMore videosSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 3:46•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=P3qzZtp2Jdg" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
 
parashar
manishshaw1
SHUBHAMSINGH10
shivamanandrj9
Competitive Programming
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.