Difficulty: Beginner

Deadline: 28 July 2004 at 19:00 GMT

Description

Professor Dante, a horitculturist at Southern Shamest State School (SSSS), needs help assigning grades for the concluding semester. He has been recording assignments for the students in a text file all semester, and he needs a program to add up the scores, determine grades, and print the results alphabetically so he can easily copy the results into his gradebook.

School policy at SSSS demands that he assign grades according to the "flat-line-curve", which states that an equal number of students will receive A's, B's, C's, D's, and E's. If the number of students in the class doesn't divide evenly into the five grades, then up to one extra grade of each letter is given out, starting with A.

For example, if there were ten students in Dr. Dante's class, each letter grade would be assigned to two students, starting with the two top students receiving A's. However, if there were 12 students in the class, the top three students would receive A's, the next three B's, the next two C's, the next two D's, and the last two E's.

Input

The input will be on stdin as a list of assignment scores. Each line contains the name of the student (which may contain spaces!), followed by a tab, and then followed by an integer score.

Output

Output to stdout the grades for each student, one student per line, in alphabetical order and in the following format:

(name) scored (total_points) points and was given a grade of (letter_grade).

Where (name) is the student name, (total_points) is the sum of the scores for that student's assignments, and (letter_grade) is the final grade given the student.

Optimize for: code brevity

Brevity is defined as the total number of tokens in your source file. This means you are free (and encouraged) to use whitespace, sensible variable names, and comments -- they won't count against you.

jgbauman has created a utility for counting tokens. Download the source here or a prebuilt .exe here.

Example

Given the input: (download the file, with tabs preserved, here)

- Code: Select all
`Kybo Ren 72`

Ryan 88

Darobat 98

Progler 73

Dave Sinkula 55

tougo 81

loobian 0

Alvaro 65

Lovechild 74

t i l e x 100

Vlad 98

schloob 71

Zen 35

Colin Jeanne 99

Colin Jeanne 34

Darobat 32

schloob 87

Zen 43

tougo 93

loobian 100

Alvaro 102

Kybo Ren 89

Lovechild 26

t i l e x 44

Dave Sinkula 94

Progler 12

Vlad 69

Output should look like:

- Code: Select all
`Alvaro scored 167 points and was given a grade of A.`

Colin Jeanne scored 133 points and was given a grade of C.

Darobat scored 130 points and was given a grade of C.

Dave Sinkula scored 149 points and was given a grade of B.

Kybo Ren scored 161 points and was given a grade of B.

Lovechild scored 100 points and was given a grade of D.

Progler scored 85 points and was given a grade of E.

Ryan scored 88 points and was given a grade of D.

Vlad scored 167 points and was given a grade of A.

Zen scored 78 points and was given a grade of E.

loobian scored 100 points and was given a grade of D.

schloob scored 158 points and was given a grade of B.

t i l e x scored 144 points and was given a grade of C.

tougo scored 174 points and was given a grade of A.

Notes

- NO MACROS.
- You are to submit the source for a complete, working, compilable program -- not just a function this time!
- "Alphabetical order" is case-sensitive for this contest.
- Input will be valid. No input line will be longer than 256 characters.
- There will be more than 4 and less than 100 students in Dr. Dante's class.
- Score amounts will be no greater than 1000 and no less than -1000.
- There is no limit on the number of assignments.

Submissions

Please attach your solution as a single .cpp file in an email to ryan@cpp-home.com, with the subject line as "Contest 39".

Post any questions or comments in this thread. Good luck and enjoy!