Given an array which represents the marks of
students. The passing grade is
and maximum marks that a student can score is
, 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 . Print the total students that can pass the exam in the end.
Examples:
Input: arr[] = {0, 21, 83, 45, 64}
Output: 3
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: 4
Approach: Let be the maximum marks of a student among all others then the maximum possible bonus marks that can be given will be
. 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 passint 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 codeint 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 passint 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 codeint 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 codepublic 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 passdef 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 coden = 5marks = [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 codepublic 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> |
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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Read More on to that Topic: geeksforgeeks.org/maximum-students-to-pass-after-giving-bonus-to-everybody-and-not-exceeding-100-marks/ […]