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 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> |
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!