Valley 1051 who took the most scholarships
Address: http://www.luogu.org/problem/show?pid=1051
Title Description
The practice of a school is to grant scholarships after the final exams of each semester. There are five scholarships issued, and the conditions for obtaining them are different:
1) Academician scholarship, 8000 yuan per person, the end of the average score of more than 80 points (>80), and in this semester published 1 or more than 1 papers students can be obtained;
2) May Fourth Scholarship, 4000 yuan per person, the end of the average score is higher than 85 points (>85), and the class appraisal result is higher than 80 (>80) students can be obtained;
3) Outstanding Achievement Award, 2000 yuan per person, students who have a final average score above 90 (>90) can be obtained;
4) Western Scholarship, 1000 yuan per person, and students from western provinces with a final average score above 85 (>85);
5) Class Contribution award, 850 yuan per person, the class appraisal result is higher than 80 points (>80) student cadres can be obtained;
As long as the criteria are met, there is no limit to the number of winners for each scholarship, and a number of scholarships are available for each student. For example, Yiao Lin's end-of-term average is 87 points, Class review score 82 points, and he is a student cadre, then he can also receive May Fourth Scholarship and Class contribution award, the total bonus is 4850 yuan.
Now give the relevant data for several students, please calculate which students get the highest total bonus (assuming that the students can meet the conditions for the scholarship).
Input/output format
Input format:
The first line of the input file scholar.in is an integer N (1 <= n <= 100) that represents the total number of students. The next n rows each row is a student's data, from left to right in turn is the name, the end of the average score, the class appraisal results, whether the student cadre, is the western Province students, as well as the number of papers published. The name is a string of not more than 20 of the length of the letter in the case of uppercase and lowercase letters (without spaces); The final average and class review scores are integers between 0 and 100 (including 0 and 100), whether student cadres and Western provinces students are represented by a single character, y means yes, n means not The number of papers published is 0 to 10 integers (including 0 and 10). Each of the two adjacent data items is separated by a space.
Output format:
The output file Scholar.out includes three lines, the first row is the name of the student who received the most bonus, and the second line is the total number of bonuses that the student received. If there are two or two students who receive the most bonuses, the first student's name appears in the input file. The third line is the total number of scholarships received by these n students.
Input/Output sample
Input Sample # #:
4YaoLin, y n 0ChenRuiyi, n y 1LiXin, n n 0ZhangQin, y n 1
Sample # # of output:
ChenRuiyi900028700
Description
2005 raising the first question of the group
Exercises
Analog + string
According to test instructions, it is easy to think that we can calculate each individual's scholarship to meet the corresponding conditions, and then compare the maximum and sum.
But the difficulty of this problem is not in the program design, but in the realization. Because strings need to be read in READLN, the strings that are read in contain not only names, but also individual information.
So how do you separate numbers or character information from a string? The method used by the author is to enumerate each character in the string, and if it is "" (a space), the current information is copied (the process) and the numeric information is converted to a number using Val (process).
At this point, the problem can be solved.
The following code is attached.
Code
- Program Scholar2;
- Var
- N,q,b,l,mon,sch,sum,i,j,code:longint;
- S,t,g,x,nam:string;
- Begin
- READLN (n);
- mon:=0;
- sch:=0;
- sum:=0;
- For i:=1 to n do
- begin
- READLN (s);
- For j:=1 to length (s) do
- if s[j]=' Then
- begin
- T:=copy (S,1,j-1);
- Delete (s,1,j);
- Break
- end;
- For j:=1 to length (s) do
- if s[j]=' Then
- begin
- Val (copy (S,1,j-1), q,code);
- Delete (s,1,j);
- Break
- end;
- For j:=1 to length (s) do
- if s[j]=' Then
- begin
- Val (copy (S,1,j-1), b,code);
- Delete (s,1,j);
- Break
- end;
- G:=copy (S,1,1);
- Delete (S,1,2);
- X:=copy (S,1,1);
- Delete (S,1,2);
- Val (S,l,code);
- if (q>) and (l>0) Then
- begin
- Inc (Mon,8000);
- Inc (SUM,8000);
- end;
- if (q>) and (b>) Then
- begin
- Inc (Mon,4000);
- Inc (SUM,4000);
- end;
- if q>
- begin
- Inc (Mon,2000);
- Inc (SUM,2000);
- end;
- if (q>) and (x=' Y ') Then
- begin
- Inc (Mon,1000);
- Inc (SUM,1000);
- end;
- if (b>) and (g=' Y ') Then
- begin
- Inc (Mon,850);
- Inc (SUM,850);
- end;
- if Mon>sch Then
- begin
- nam:=t;
- Sch:=mon;
- mon:=0;
- End
- else mon:=0;
- end;
- writeln (NAM);
- Writeln (Sch);
- writeln (sum);
- End.
(This article is the author original, without permission not reproduced)
Luo Gu 1051 who took the most scholarship problem solving report