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<iostream> ` `#include<algorithm> ` `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+5); ` ` ` ` ` `// 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 mits ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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)) ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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` `); ` |

*chevron_right*

*filter_none*

**Output:**

3

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Construct a Matrix with no element exceeding X and sum of two adjacent elements not exceeding Y
- Maximum profit such that total stolen value is less than K to get bonus
- Minimum and maximum number of N chocolates after distribution among K students
- Largest possible value of M not exceeding N having equal Bitwise OR and XOR between them
- Count of N-digit numbers with absolute difference of adjacent digits not exceeding K
- Count of N-digit numbers with absolute difference of adjacent digits not exceeding K | Set 2
- Count of all possible numbers not exceeding M having suffix N
- Count number of triangles possible with length of sides not exceeding N
- Calculate the CGPA and CGPA % of marks obtained by a Student in N subjects
- Find the total marks obtained according to given marking scheme
- Split array into minimum number of subarrays having GCD of its first and last element exceeding 1
- Loops and Control Statements (continue, break and pass) in Python
- Check if an array can be split into subarrays with GCD exceeding K
- Pair of integers having least GCD among all given pairs having GCD exceeding K
- Determine the number of squares of unit area that a given line will pass through.
- Why is programming important for first year or school students?
- Number of ways to distribute N Paper Set among M students
- Program to calculate Percentile of Students
- Count the number of ways to give ranks for N students such that same ranks are possible
- Check whether a + b = c or not after removing all zeroes from a,b and c

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.