Question

In: Statistics and Probability

Swayamvar Problem Description A ceremony where a Bride chooses her Groom from an array of eligible...

Swayamvar

Problem Description

A ceremony where a Bride chooses her Groom from an array of eligible bachelors is called Swayamvar. But this is a Swayamvar with difference. An array of Bride-to-be will choose from an array of Groom-to-be.

The arrangement at this Swayamvar is as follows

· Brides-to-be are organized such that the most eligible bachelorette will get first chance to choose her Groom. Only then, the next most eligible bachelorette will get a chance to choose her Groom

· If the initial most eligible bachelorette does not get a Groom of her choice, none of the Brides-to-be have any chance at all to get married. So unless a senior bachelorette is out of the “queue”, the junior bachelorette does not get a chance to select her Groom-to-be

· Inital state of Grooms-to-be is such that most eligible bachelor is at the head of the “queue”. The next most eligible bachelor is next in the queue. So on and so forth.

· Now everything hinges on the choice of the bachelorette. The most eligible bachelorette will now meet the most eligible bachelor.

· If bachelorette selects the bachelor, both, the bachelorette and the bachelor are now Bride and Groom respectively and will no longer be a part of the Swayamvar activity. Now, the next most eligible bachelorette will get a chance to choose her Groom. Her first option is the next most eligible bachelor (relative to initial state)

· If the most eligible bachelorette passes the most eligible bachelor, the most eligible bachelor now moves to the end of the queue. The next most eligible bachelor is now considered by the most eligible bachelorette. Selection or Passing over will have the same consequences as explained earlier.

· If most eligible bachelorette reaches the end of bachelor queue, then the Swayamvar is over. Nobody can get married.

· Given a mix of Selection or Passing over, different pairs will get formed.

The selection criteria is as follows

1. Each person either drinks rum or mojito. Bride will choose groom only if he drinks the same drink as her.

Note : There are equal number of brides and grooms for the swayamvar.

Tyrion as the hand of the king wants to know how many pairs will be left unmatched. Can you help Tyrion?

Constraints

1<= N <= 10^4

Input Format

First line contains one integer N, which denotes the number of brides and grooms taking part in the swayamvar. Second line contains a string in lowercase, of length N containing initial state of brides-to-be. Third line contains a string in lowercase, of length N containing initial state of grooms-to-be. Each string contains only lowercase 'r' and 'm' stating person at that index drinks "rum"(for 'r') or mojito(for 'm').

Output

Output a single integer denoting the number of pairs left unmatched.

Timeout

1

Explanation

Example 1

Input

4

rrmm mrmr

Output

0

Explanation

The bride at first place will only marry groom who drinks rum. So the groom at first place will join the end of the queue. Updated groom's queue is "rmrm".

Now the bride at first place will marry the groom at first place. Updated bride's queue is "rmm" and groom's queue is "mrm".

The process continues and at last there are no pairs left. So answer is 0.

Example 2

Input

4 rmrm mmmr

Output

2

Explanation

Following the above process 2 pairs will be left unmatched. Remember that bride will not move until she gets a groom of her choice.

Solutions

Expert Solution

Here is the code for your problem.

#include <bits/stdc++.h>
using namespace std;
// main function contains the complete logic
int main()
{
    // taking inputs
    int n;
    cin >> n;
    string brides, grooms;
    cin >> brides >> grooms;
    // i = for indexing brides
    // j = for indexing groomes
    int i = 0, j = 0;
    // while there are still brides left
    while (n > 0)
    {
        j %= n;
        int t = j;
        bool stop = false;
        // check if bride can marry current groom
        while (grooms[j] != brides[i])
        {
            j++;
            j %= n;
            // check if bride cannot marry any groom
            if (j == t)
            {
                stop = true;
                break;
            }
        }
        // if bride cannot marry any groom
        if (stop)
        {
            break;
        }
        // bride and groom are selected, so we remove the groom, and the bride
        grooms.erase(j, 1);
        i++;
        n--;
    }
    // print the number of brides left
    cout << n << endl;
    return 0;
}


Here is the screenshot of the code if the indentation is not clear.


Here is the output of the code.

Hope this helps. Please rate the answer if you like it.
Do leave a comment. Any suggestion/query is much appreciated.


Related Solutions

Description Inversion Count for an array indicates – how far (or close) the array is from...
Description Inversion Count for an array indicates – how far (or close) the array is from being sorted. If array is already sorted then inversion count is 0. If array is sorted in reverse order that inversion count is the maximum. Formally speaking, two elements a[i] and a[j] form an inversion if a[i] > a[j] and i < j . Example: The sequence 2, 4, 1, 3, 5 has three inversions (2, 1), (4, 1), (4, 3). Requirements: • Design...
Description: One problem with dynamic arrays is that once the array is created using the new...
Description: One problem with dynamic arrays is that once the array is created using the new operator the size cannot be changed. For example, you might want to add or delete entries from the array similar to the behavior of a vector. This assignment asks you to create a class called DynamicStringArray that includes member functions that allow it to emulate the behavior of a vector of strings. The class should have the following: • A private member variable called...
Python DESCRIPTION Write a program that will read an array of integers from a file and...
Python DESCRIPTION Write a program that will read an array of integers from a file and do the following: ● Task 1: Revert the array in N/2 complexity time (i.e., number of steps) . ● Task 2: Find the maximum and minimum element of the array. INPUT OUTPUT Read the array of integers from a file named “ inputHW1.txt ”. To do this, you can use code snippet from the “ file.py ” file. This file is provided in Canvas....
Python DESCRIPTION Write a program that will read an array of integers from a file and...
Python DESCRIPTION Write a program that will read an array of integers from a file and do the following: ● Task 1: Revert the array in N/2 complexity time (i.e., number of steps) . ● Task 2: Find the maximum and minimum element of the array. INPUT OUTPUT Read the array of integers from a file named “ inputHW1.txt ”. To do this, you can use code snippet from the “ file.py ” file. This file is provided in Canvas....
Objective: Identify the various types of software requirements from problem statements. Problem Description: In this experiment...
Objective: Identify the various types of software requirements from problem statements. Problem Description: In this experiment the students will learn how to identify functional and non-functional requirements from a given problem statement. Functional and non-functional requirements are the primary components of a Software Requirements Specification (SRS). Expected Outcome: After completing this exercise, the students will be able to: ● Identify ambiguities, inconsistencies and incompleteness from a requirements specification. ● Identify and state functional requirements. ● Identify and state non-functional requirements....
This is a Java program Problem Description Write an application that inputs five digits from the...
This is a Java program Problem Description Write an application that inputs five digits from the user, assembles the individual digits into a five-digit integer number (the first digit is for one’s place, the second digit is for the ten’s place, etc.) using arithmetic calculations and prints the number. Assume that the user enters enough digits. Sample Output Enter five digits: 1 2 3 4 5 The number is 54321 Problem-Solving Tips The input digits are integer, so you will...
Problem description Write a program that uses a loop to read integer values from the standard...
Problem description Write a program that uses a loop to read integer values from the standard input stream. Each non-zero value, x, is the first number of a sequence. Define a0 = x; an+1 = an / 2 if an is even; an+1 = 3 * an + 1 if an is odd. Then there exists an integer k such that ak = 1. For each non-zero value of x, the program outputs the integer k such that ak =...
Please make up a problem where there is a spaceship observed from the Earth to be...
Please make up a problem where there is a spaceship observed from the Earth to be moving toward a star at a certain speed. You give the distnance from the spaceship to the star and the question asks how much time has passed to get to the star. Please use equations to solve for this problem. Thanks!
Solve the following initial value problem over the interval from t = 0 to 2 where...
Solve the following initial value problem over the interval from t = 0 to 2 where y(0) = 1 using the following methods. dy/dt=y*t^2−1.1y a) Analytical method b) Euler's method with h=0.5 at t=2 c) Euler's method with h=0.25 at t=2 d) Midpoint method with h=0.5 at t=2 e) Fourth-order Runge-Kutta method with h=0.5 at t=2 f) Display all yor results obtained above on the same graph
Solve the following initial value problem over the interval from t = 0 to 1 where...
Solve the following initial value problem over the interval from t = 0 to 1 where y(0) = 1 using the following methods with a step size of 0.25. dy/dt=(1+4t)*sqrt(y) a) Analytical method b) Euler's method c) Heun's method without iteration d) Ralston's method e) Fourth-order Runge-Kutta method f) Display all your results obtained above on the same graph
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT