Skip to content
Related Articles

Related Articles

Find if neat arrangement of cups and shelves can be made
  • Difficulty Level : Basic
  • Last Updated : 12 Oct, 2018

Given three different types of cups (a[]) and saucers (b[]), and n number of shelves, find if neat arrangement of cups and shelves can be made.
Arrangement of the cups and saucers will be neat if it follows the below rules:

  • No shelf can contain both cups and saucers
  • There can be no more than 5 cups in any shelf
  • There can be no more than 10 saucers in any shelf

Examples:

Input : a[] = {3, 2, 6}
        b[] = {4, 8, 9}
        n = 10
Output : Yes
Explanation :  
Total cups = 11, shelves required = 3
Total saucers = 21, shelves required = 3
Total required shelves = 3 + 3 = 6, 
which is less than given number of 
shelves n. So, output is Yes.

Input : a[] = {4, 7, 4}
        b[] = {3, 9, 10}
        n = 2
Output : No

Approach : To arrange the cups and the saucers, find out the total number of cups a and total number of saucers b. Since, there cannot be more than 5 cups in the same shelf, therefore find out the maximum number of shelves required for cup by the formula \frac{a+5-1}{5} and the maximum number of shelves required for saucers by using the formula \frac{b+10-1}{10}. If sum of these two values is equal to or less than n then the arrangement is possible
otherwise not.

Below is the implementation of above approach :

C++




// C++ code to find if neat 
// arrangement of cups and 
// shelves can be made
#include<bits/stdc++.h>
using namespace std;
  
// Function to check arrangement
void canArrange(int a[], int b[], int n)
{
    int suma = 0, sumb = 0;
      
    // Calculating total number
    // of cups
    for(int i = 0; i < 3; i++)
        suma += a[i];
          
    // Calculating total number
    // of saucers
    for(int i = 0; i < 3; i++)
        sumb += b[i];
          
    // Adding 5 and 10 so that if the
    // total sum is less than 5 and
    // 10 then we can get 1 as the
    // answer and not 0
    int na = (suma + 5 - 1) / 5;
    int nb = (sumb + 10 - 1) / 10;
      
    if(na + nb <= n)
        cout << "Yes";
    else 
        cout << "No";
}
  
// Driver code
int main()
{
    // Number of cups of each type
    int a[] = {3, 2, 6};
      
    // Number of saucers of each type
    int b[] = {4, 8, 9};
      
    // Number of shelves
    int n = 10;
      
    // Calling function
    canArrange(a, b, n);
    return 0;
}


Java




// Java code to find if neat 
// arrangement of cups and 
// shelves can be made
import java.io.*;
  
class Gfg
{
    // Function to check arrangement
    public static void canArrange(int a[], int b[],
                                           int n)
    {
        int suma = 0, sumb = 0;
          
        // Calculating total number
        // of cups
        for(int i = 0; i < 3; i++)
            suma += a[i];
              
        // Calculating total number
        // of saucers
        for(int i = 0; i < 3; i++)
            sumb += b[i];
              
        // Adding 5 and 10 so that if
        // the total sum is less than
        // 5 and 10 then we can get 1 
        // as the answer and not 0
        int na = (suma + 5 - 1) / 5;
        int nb = (sumb + 10 - 1) / 10;
          
        if(na + nb <= n)
            System.out.println("Yes");
        else
            System.out.println("No");
    }
      
    // Driver function
    public static void main(String args[])
    {
        // Number of cups of each type
        int a[] = {3, 2, 6};
          
        // Number of saucers of each type
        int b[] = {4, 8, 9};
          
        // Number of shelves
        int n = 10;
          
        // Calling function
        canArrange(a, b, n);
    }
}


Python 3




# Python code to find if neat 
# arrangement of cups and 
# shelves can be made
  
import math
  
# Function to check arrangement
def canArrange( a, b, n):
        suma = 0
        sumb = 0
          
        # Calculating total number
        # of cups
        for i in range(0, len(a)):
            suma += a[i]
              
        # Calculating total number
        # of saucers
        for i in range(0,len(b)):
            sumb += b[i]
              
        # Adding 5 and 10 so that if
        # the total sum is less than
        # 5 and 10 then we can get 1 
        # as the answer and not 0
        na = (suma + 5 - 1) / 5
        nb = (sumb + 10 - 1) / 10
          
        if(na + nb <= n):
            print("Yes")
        else:
            print("No")
          
# driver function
  
#Number of cups of each type
a = [3, 2, 6]
  
# Number of saucers of each type
b = [4, 8, 9]
  
# Number of shelves
n = 10
  
#Calling function
canArrange(a ,b ,n)
  
  
# This code is contributed by Gitanjali.


C#




// C# code to find if neat 
// arrangement of cups and 
// shelves can be made
using System;
  
class Gfg {
      
    // Function to check arrangement
    public static void canArrange(int []a, int []b,
                                        int n)
    {
          
        int suma = 0, sumb = 0;
          
        // Calculating total number
        // of cups
        for(int i = 0; i < 3; i++)
            suma += a[i];
              
        // Calculating total number
        // of saucers
        for(int i = 0; i < 3; i++)
            sumb += b[i];
              
        // Adding 5 and 10 so that if
        // the total sum is less than
        // 5 and 10 then we can get 1 
        // as the answer and not 0
        int na = (suma + 5 - 1) / 5;
        int nb = (sumb + 10 - 1) / 10;
          
        if(na + nb <= n)
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
      
    // Driver function
    public static void Main()
    {
          
        // Number of cups of each type
        int []a = {3, 2, 6};
          
        // Number of saucers of each type
        int []b = {4, 8, 9};
          
        // Number of shelves
        int n = 10;
          
        // Calling function
        canArrange(a, b, n);
    }
}
  
// This code is contributed by vt_m.


PHP




<?php
// PHP code to find if neat 
// arrangement of cups and 
// shelves can be made
  
  
// Function to check arrangement
function canArrange($a, $b, $n)
{
    $suma = 0; $sumb = 0;
      
    // Calculating total number
    // of cups
    for( $i = 0; $i < 3; $i++)
        $suma += $a[$i];
          
    // Calculating total number
    // of saucers
    for( $i = 0; $i < 3; $i++)
        $sumb += $b[$i];
          
    // Adding 5 and 10 so that if the
    // total sum is less than 5 and
    // 10 then we can get 1 as the
    // answer and not 0
    $na = ($suma + 5 - 1) / 5;
    $nb = ($sumb + 10 - 1) / 10;
      
    if($na + $nb <= $n)
        echo "Yes";
    else
        echo "No";
}
  
    // Driver code
  
    // Number of cups of each type
    $a = array(3, 2, 6);
      
    // Number of saucers of each type
    $b = array(4, 8, 9);
      
    // Number of shelves
    $n = 10;
      
    // Calling function
    canArrange($a, $b, $n);
  
// This code is contributed by vt_m.
?>



Output:

Yes

competitive-programming-img




My Personal Notes arrow_drop_up
Recommended Articles
Page :