Open In App

Maximum students to pass after giving bonus to everybody and not exceeding 100 marks

Last Updated : 29 Jun, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given an array arr         which represents the marks of n         students. The passing grade is 50         and maximum marks that a student can score is 100         , the task is to maximize the student that are passing the exam by giving bonus marks to the students. 
Note that if a student is given bonus marks then all other students will also be given the same amount of bonus marks without any student’s marks exceeding 100         . Print the total students that can pass the exam in the end.
Examples: 
 

Input: arr[] = {0, 21, 83, 45, 64} 
Output:
We can only add maximum of 17 bonus marks to the marks of all the students. So, the final array becomes {17, 38, 100, 62, 81} 
Only 3 students will pass the exam.
Input: arr[] = {99, 50, 46, 47, 48, 49, 98} 
Output:
 


 


Approach: Let M         be the maximum marks of a student among all others then the maximum possible bonus marks that can be given will be 100 - M         . Now for every student whose marks + (100 – M) ? 50, increment the count. Print the count in the end.
Below is the implementation of the above approach: 
 

C++

// C++ Implementation of above approach.
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the number of students that can pass
int check(int n, int marks[])
{
    // maximum marks
    int* x = std::max_element(marks, marks + n);
    // maximum bonus marks that can be given
    int bonus = 100 - (int)(*x);
    int c = 0;
    for (int i = 0; i < n; i++) {
        // counting the number of students that can pass
        if (marks[i] + bonus >= 50)
            c += 1;
    }
    return c;
}
 
// Driver code
int main()
{
    int n = 5;
    int marks[] = { 0, 21, 83, 45, 64 };
    cout << check(n, marks) << endl;
    return 0;
}
 
// This code is contributed by Aditya Kumar (adityakumar129)

                    

C

// C Implementation of above approach.
#include <stdio.h>
 
int max_element(int arr[], int n)
{
    // Initialize maximum element
    int max = arr[0];
    // Traverse array elements from second and compare every
    // element with current max
    for (int i = 1; i < n; i++)
        if (arr[i] > max)
            max = arr[i];
    return max;
}
 
// Function to return the number of students that can pass
int check(int n, int marks[])
{
    // maximum marks
    int x = max_element(marks, n);
 
    // maximum bonus marks that can be given
    int bonus = 100 - x;
    int c = 0;
    for (int i = 0; i < n; i++) {
        // counting the number of students that can pass
        if (marks[i] + bonus >= 50)
            c += 1;
    }
    return c;
}
 
// Driver code
int main()
{
    int n = 5;
    int marks[] = { 0, 21, 83, 45, 64 };
    printf("%d\n", check(n, marks));
    return 0;
}
 
// This code is contributed by Aditya Kumar (adityakumar129)

                    

Java

// Java Implementation of above approach.
import java.util.*;
class GFG{
// Function to return the number
// of students that can pass
static int check(int n, List<Integer> marks)
{
    // maximum marks
    Integer x = Collections.max(marks);
 
    // maximum bonus marks that can be given
    int bonus = 100-x;
    int c = 0;
    for(int i=0; i<n;i++)
    {
 
        // counting the number of
        // students that can pass
        if(marks.get(i) + bonus >= 50)
            c += 1;
    }
    return c;
}
     
// Driver code
public static void main(String[] args)
{
int n = 5;
 List<Integer> marks = Arrays.asList(0, 21, 83, 45, 64);
System.out.println(check(n, marks));
}
}
// This code is contributed by mits

                    

Python3

# Python3 Implementation of above approach.
 
# Function to return the number
# of students that can pass
def check(n, marks):
 
    # maximum marks
    x = max(marks)
 
    # maximum bonus marks that can be given
    bonus = 100-x
    c = 0
    for i in range(n):
 
        # counting the number of
        # students that can pass
        if(marks[i] + bonus >= 50):
            c += 1
 
    return c
 
# Driver code
n = 5
marks = [0, 21, 83, 45, 64]
print(check(n, marks))

                    

C#

// C# Implementation of above approach.
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
class GFG{
// Function to return the number
// of students that can pass
static int check(int n, List<int> marks)
{
    // maximum marks
    int x = marks.Max();
 
    // maximum bonus marks that can be given
    int bonus = 100-x;
    int c = 0;
    for(int i=0; i<n;i++)
    {
 
        // counting the number of
        // students that can pass
        if(marks[i] + bonus >= 50)
            c += 1;
    }
    return c;
}
     
// Driver code
public static void Main()
{
int n = 5;
List<int> marks = new List<int>(new int[]{0, 21, 83, 45, 64});
Console.WriteLine(check(n, marks));
}
}
// This code is contributed by mits

                    

PHP

<?php
 
// PHP Implementation of above approach.
 
// Function to return the number
// of students that can pass
function check($n, $marks)
{
    // maximum marks
    $x = max($marks);
 
    // maximum bonus marks that can be given
    $bonus = 100-$x;
    $c = 0;
    for($i=0; $i<$n;$i++)
    {
 
        // counting the number of
        // students that can pass
        if($marks[$i] + $bonus >= 50)
            $c += 1;
    }
    return $c;
}
     
// Driver code
$n = 5;
$marks = array(0, 21, 83, 45, 64);
echo check($n, $marks);

                    

Javascript

<script>
 
// JavaScript Implementation of above approach.
 
// Function to return the number
// of students that can pass
function check(n, marks)
{
    // maximum marks
    let x = Math.max(...marks);
   
    // maximum bonus marks that can be given
    let bonus = 100-x;
    let c = 0;
    for(let i=0; i<n;i++)
    {
   
        // counting the number of
        // students that can pass
        if(marks[i] + bonus >= 50)
            c += 1;
    }
    return c;
}
     
    // Driver code
 
    let n = 5;
     let marks = [0, 21, 83, 45, 64];
     document.write(check(n, marks));
 
       
</script>

                    

Output
3

Time Complexity: O(n), since the loop runs from 0 to (n – 1).

Auxiliary Space: O(1), since no extra space has been taken.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads