# Students with maximum average score of three subjects

• Last Updated : 28 Nov, 2022

Given a file containing data of student name and marks scored by him/her in 3 subjects. The task is to find the list of students having the maximum average score.

Note: If more than one student has the maximum average score, print any one of them.

Examples:

Input: N = 2, file = {{“Shrikanth”, “20” ,”30″, “10”}, {“Ram”, “100”, “50”, “10”}}
Output: Ram 53
Explanation:
Shrikanth has an average of 20, whereas
Ram has a average of 53. So, Ram has the
maximum average.

Input: N = 3, file = {{“Adam”, “50”, “10”, “40”}, {“Rocky”, “100”, “90”, “10”}, {“Suresh”, “10”, “90” ,”100″}}
Output: Rocky 66
Explanation:
Rocky and Suresh both have an average of 66, which is the
highest in the class.

Approach :

1. Traverse the file data and store average scores for each student.
2. Now, find the maximum average score and search for all the students with this maximum average score.
3. Print the maximum average score and names as per the order in the file.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the``// list of students having maximum average score``#include ``using` `namespace` `std;` `string studentRecord(vector >& S, ``int` `N)``{``    ``// code here` `    ``int` `maxi = INT_MIN;``    ``string result = ``""``;``    ``for` `(``int` `i = 0; i < N; i++) {``        ``int` `avg = (stoi(S[i][1]) + stoi(S[i][2])``                   ``+ stoi(S[i][3]))``                  ``/ 3;``        ``if` `(avg > maxi) {``            ``maxi = avg;``            ``result = S[i][0];``        ``}``        ``else` `if` `(avg == maxi) {``            ``result = result + ``" "` `+ S[i][0];``        ``}``    ``}``    ``return` `result + ``" "` `+ to_string(maxi);``}` `// Driver code``int` `main()``{``    ``int` `N = 2;``    ``vector> file``        ``= { {``"Shrikanth"``, ``"20"``, ``"30"` `,``"10"``}, {``"Ram"` `,``"100"``, ``"50"``, ``"10"``}};` `    ``cout << studentRecord(file, N);``}`

## Java

 `/*package whatever //do not write package name here */``import` `java.util.*;``class` `GFG {` `  ``static` `String studentRecord(String[][] S, ``int` `N)``  ``{` `    ``// code here``    ``int` `maxi = Integer.MIN_VALUE;``    ``String result = ``""``;``    ``for` `(``int` `i = ``0``; i < N; i++) {``      ``int` `avg = (Integer.parseInt(S[i][``1``]) + Integer.parseInt(S[i][``2``]) + Integer.parseInt(S[i][``3``]))/ ``3``;``      ``if` `(avg > maxi) {``        ``maxi = avg;``        ``result = S[i][``0``];``      ``}``      ``else` `if` `(avg == maxi) {``        ``result = result + ``" "` `+ S[i][``0``];``      ``}``    ``}``    ``return` `result + ``" "` `+ maxi;``  ``}``  ``public` `static` `void` `main (String[] args) {``    ``int` `N = ``2``;``    ``String[][] file= { {``"Shrikanth"``, ``"20"``, ``"30"` `,``"10"``},``                      ``{``"Ram"` `,``"100"``, ``"50"``, ``"10"``}};` `    ``System.out.println(studentRecord(file, N));``  ``}``}` `// This code is contributed by aadityaburujwale.`

## C#

 `// C# program to find the``// list of students having maximum average score``using` `System;``class` `GFG {` `  ``static` `string` `studentRecord(String[, ] S, ``int` `N)``  ``{` `    ``// code here``    ``int` `maxi = Int32.MinValue;``    ``String result = ``""``;``    ``for` `(``int` `i = 0; i < N; i++) {``      ``int` `avg = (Int32.Parse(S[i, 1])``                 ``+ Int32.Parse(S[i, 2])``                 ``+ Int32.Parse(S[i, 3]))``        ``/ 3;``      ``if` `(avg > maxi) {``        ``maxi = avg;``        ``result = S[i, 0];``      ``}``      ``else` `if` `(avg == maxi) {``        ``result = result + ``" "` `+ S[i, 0];``      ``}``    ``}``    ``return` `result + ``" "` `+ maxi;``  ``}``  ``public` `static` `void` `Main(``string``[] args)``  ``{``    ``int` `N = 2;``    ``String[, ] file``      ``= { { ``"Shrikanth"``, ``"20"``, ``"30"``, ``"10"` `},``         ``{ ``"Ram"``, ``"100"``, ``"50"``, ``"10"` `} };` `    ``Console.WriteLine(studentRecord(file, N));``  ``}``}` `// This Code is contributed by karandeep1234`

## Javascript

 `function` `studentRecord( S,  N)``{``    ``// code here``    ``let maxi =Number.MIN_VALUE;``    ``let result = ``""``;``    ``for` `(let i = 0; i < N; i++) {``        ``let avg = (parseInt(S[i][1]) + parseInt(S[i][2])``                   ``+ parseInt(S[i][3]))``                  ``/ 3;``        ``if` `(avg > maxi) {``            ``maxi = avg;``            ``result = S[i][0];``        ``}``        ``else` `if` `(avg == maxi) {``            ``result = result + ``" "` `+ S[i][0];``        ``}``    ``}``    ``console.log(result + ``" "` `+ parseInt(maxi));``}` `// Driver code``    ``let N = 2;``   ``let file``        ``= [[``"Shrikanth"``, ``"20"``, ``"30"` `,``"10"``], [``"Ram"` `,``"100"``, ``"50"``, ``"10"``]];` `     ``studentRecord(file, N);` `// This code is contributed by garg28harsh.`

Output

`Ram 53`

Time complexity: O(N) where N is the number of students in the given string array.
Auxiliary space: O(N)

My Personal Notes arrow_drop_up