这道例题书上要求自己补全代码,因此也当做一道习题来完成。
wa卡了我好几天,最后通过与网上找到的标程对拍才发现是当数据库被清空后统计函数会出现除0的错误。
其实对拍之前读标程的时候已经注意到这点了,但是自己居然以为已经处理好了......
改好程序后顺利通过对拍,再上传还是wa,重新写了测试数据后,发现数据库被完全清空后再添加记录我的程序全报duplicated,改掉bug后第二次上传顺利AC。
后来发现第二个bug官方测试数据是查不出来的,第一次上传后wa其实是因为当时我没注释#define LOCAL ...囧
//#define LOCAL
//#define TESTING
#include<stdio.h>
#include<string.h>
#define maxl 10000
#define EPS 0.00001
int score[maxl][10];//score[][0,1,2,3,4] 分别为(Chinese成绩, Mathematics成绩, English成绩, Programming成绩,总分)
int removed[maxl];//删除状态标识
int n;//数据库中包含的学生信息数量
int cid[maxl];//班级编号
char sid[maxl][99], name[maxl][99];//sid:学生编号 name:学生姓名
void print_menu()//打印目录函数
{
printf("Welcome to Student Performance Management System (SPMS).\n\n");
printf("1 - Add\n");
printf("2 - Remove\n");
printf("3 - Query\n");
printf("4 - Show ranking\n");
printf("5 - Show Statistics\n");
printf("0 - Exit\n\n");
return;
}
void add()
{
char s[maxl];
for(;;)
{
bool dup = 0;
memset(s,0,sizeof(s));
printf("Please enter the SID, CID, name and four scores. Enter 0 to finish.\n");
scanf("%s", s);
#ifdef TESTING
printf("T:input=%s\n", s);
#endif
if(strcmp(s, "0") == 0) break;
//覆盖已删除数据
int indfre = -1;
if(n)
{
bool firstre = false;
for(int i = 0; i <n; i++)
{
if(removed[i]&&!firstre)
{
firstre = true;
indfre = i;
}
if(firstre&&!removed[i])
{
removed[i] = true;
for(int j = 0; j <= 10; j++) sid[indfre][j]=sid[i][j];
cid[indfre] = cid[i];
for(int j = 0; j <= 10; j++) name[indfre][j]=name[i][j];
for(int j = 0; j <= 4; j++) score[indfre][j] = score[i][j];
removed[indfre] = false;
#ifdef TESTING
printf("i=%d n=%d indfre=%d\n", i, n, indfre);
printf("T:record[%d]: %s %d %s %d %d %d %d %d %.2f\n", indfre, sid[indfre],
cid[indfre], name[indfre], score[indfre][0], score[indfre][1], score[indfre][2], score[indfre][3],
score[indfre][4], score[indfre][4]/4.0+EPS);
#endif
indfre++;
}
if((indfre == 0)&&removed[i]&&(n-i)==1) n = 0;
}
}
if(indfre>0) n = indfre;
//覆盖已删除数据结束
//查重
if(n)
{
for(int i = 0; i <n; i++)
{
if(strcmp(s, sid[i]) == 0)
{
printf("Duplicated SID.\n");
#ifdef TESTING
printf("i=%d n=%d\n", i, n);
#endif
dup = true;
break;
}
}
}
if(dup)
{
int drop;
char drops[maxl];
scanf("%d%s%d%d%d%d",&drop,drops,&drop,&drop,&drop,&drop);
continue;
}
//查重结束
//添加数据
if(removed[n]) removed[n] = false;
for(int i = 0; i <= 10; i++) sid[n][i]=s[i];
#ifdef TESTING
printf("T:s=%s sid=%s\n", s, sid[n]);
#endif
scanf("%d", &cid[n]);
scanf("%s", name[n]);
scanf("%d%d%d%d", &score[n][0], &score[n][1], &score[n][2], &score[n][3]);
score[n][4] = 0;
for(int i = 0; i < 4; i++) score[n][4] += score[n][i];
#ifdef TESTING
printf("T:record[%d]: %s %d %s %d %d %d %d %d %.2f\n", n, sid[n],
cid[n], name[n], score[n][0], score[n][1], score[n][2], score[n][3],
score[n][4], score[n][4]/4.0+EPS);
#endif
n++;
//添加数据结束
}
return;
}
int rank(int rec)
{
int ranking = 1;
for(int i = 0; i < n; i++)if(!removed[i])
{
if(score[rec][4] < score[i][4]) ranking++;
}
return ranking;
}
void DQ(int isq)//声明删除查询函数DQ 参数 整型变量 isq:查询指令标识 isq=1表示查询 isq=0表示删除
{
char s[maxl];
for(;;)
{
printf("Please enter SID or name. Enter 0 to finish.\n");//输出提示信息
scanf("%s", s);
#ifdef TESTING
printf("T:input=%s\n", s);
#endif
if(strcmp(s, "0") == 0) break;
int r = 0;
for(int i = 0; i < n; i++) if(!removed[i])
{
if(strcmp(sid[i], s) == 0 || strcmp(name[i], s) == 0)
{
if(isq) printf("%d %s %d %s %d %d %d %d %d %.2f\n", rank(i), sid[i],
cid[i], name[i], score[i][0], score[i][1], score[i][2], score[i][3],
score[i][4], score[i][4]/4.0+EPS);
else { removed[i] = 1; r++;}
}
}
if(!isq) printf("%d student(s) removed.\n",r);
}
}
void stat()
{
int c;
int sumsc[10],pasc[10],fasc[10],pass[10],tot = 0;
char kemu[10][30] = {"Chinese","Mathematics","English","Programming"};
char as[] = "Average Score: ";
char np[] = "Number of passed students: ";
char nf[] = "Number of failed students: ";
memset(sumsc,0,sizeof(sumsc));
memset(pasc,0,sizeof(pasc));
memset(fasc,0,sizeof(fasc));
memset(pass,0,sizeof(pass));
printf("Please enter class ID, 0 for the whole statistics.\n");
scanf("%d", &c);
#ifdef TESTING
printf("T:input=%d\n", c);
#endif
for(int i = 0; i < n; i++) if(!removed[i])
{
if(cid[i]== c|| c == 0)
{
int passed = 4;
for(int j = 0; j < 4; j++)
{
sumsc[j] += score[i][j];
if(score[i][j] >= 60) pasc[j]++;
else
{
passed--;
fasc[j]++;
}
}
if(passed == 4) {pass[4]++;pass[3]++;pass[2]++;pass[1]++;}
else if(passed == 3) {pass[3]++;pass[2]++;pass[1]++;}
else if(passed == 2) {pass[2]++;pass[1]++;}
else if(passed == 1) pass[1]++;
else pass[0]++;
tot++;
}
#ifdef TESTING
printf("T:i=%d tot=%d\n", i, tot);
#endif
}
if(n)
{
for(int i = 0; i < 4; i++)
{
double avsc;
if(tot) avsc=sumsc[i]*1.0/tot+EPS;
else avsc = 0.0;
printf("%s\n%s%.2lf\n", kemu[i],as,avsc+EPS);
printf("%s%d\n", np, pasc[i]);
printf("%s%d\n\n", nf, fasc[i]);
}
printf("Overall:\nNumber of students who passed all subjects: %d\n",pass[4]);
printf("Number of students who passed 3 or more subjects: %d\n",pass[3]);
printf("Number of students who passed 2 or more subjects: %d\n",pass[2]);
printf("Number of students who passed 1 or more subjects: %d\n",pass[1]);
printf("Number of students who failed all subjects: %d\n\n",pass[0]);
}
}
#ifdef TESTING
void showranking()
{
printf("Showing the ranklist hurts students' self-esteem. Do that.\n");
int ranking[maxl], last=1;
for(int i = 0; i < maxl; i++) ranking[i] = 1;
for(int i = 0; i < n; i++)if(!removed[i])
{
for(int j = 0; j < n ; j++)if(!removed[j])
{
if(score[i][4] < score[j][4])
{
ranking[i]++;
printf("i=%d j=%d ranking=%d\n",i,j,ranking[i]);
}
}
if(last < ranking[i]) last = ranking[i];
}
int pranking = 1;
for(int j = 0; j <last; j++)
{
for(int i = 0; i < n; i++)if(!removed[i])
{
if(ranking[i]==pranking)
{
printf("i=%d rank=%d pranking=%d %s %d %s %d %d %d %d %d %.2f\n", i, ranking[i], pranking, sid[i],
cid[i], name[i], score[i][0], score[i][1], score[i][2], score[i][3],
score[i][4], score[i][4]/4.0+EPS);
}
}
pranking++;
}
}
#endif
int main()
{
#ifdef LOCAL
freopen("lt4-6.in","r",stdin);
freopen("lt4-6.out","w",stdout);
#endif
memset(score,0,sizeof(score));
memset(removed,0,sizeof(removed));
memset(cid,0,sizeof(cid));
memset(sid,0,sizeof(sid));
memset(name,0,sizeof(name));
for(;;)
{
int choice;//声明整型变量choice:操作选项
print_menu();//执行打印目录函数
scanf("%d", &choice);//读入一个整数 赋值给操作选项choice函数
#ifdef TESTING
printf("T:choice=%d\n", choice);
#endif
if(choice == 0) break;//如果操作选项为0,终止程序
if(choice == 1) add();//如果操作选项为1,执行添加函数 add()
if(choice == 2) DQ(0);//如果操作选项为2,执行删除查询函数DQ() 参数0(删除功能)
if(choice == 3) DQ(1);//如果操作选项为3,执行删除查询函数DQ() 参数1(查询功能)
if(choice == 4) printf("Showing the ranklist hurts students' self-esteem. Don't do that.\n");
//如果操作选项为4 输出提示信息
if(choice == 5) stat();////如果操作选项为5,执行统计函数 stat()
#ifdef TESTING
if(choice == 6) showranking();
#endif
}
return 0;
}
对拍时参考的标程(来源:http://blog.tobygameac.com/2013/08/uva-12412-typical-homework-aka-shi.html)
#include <cstdio>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#define PB push_back
using namespace std;
typedef string Course;
class Student {
public:
Student(string SID, int CID, string name, vector<int> scores) : SID(SID), CID(CID), name(name), scores(scores) {
total = 0;
for (int i = 0; i < scores.size(); i++) {
total += scores[i];
}
average = total / (double)scores.size();
}
string SID, name;
int CID;
vector<int> scores;
int total;
double average;
};
class SPMS {
public:
SPMS(vector<Course> courses) : courses(courses) {}
void run() {
int option = -1;
do {
switch (option) {
case 1:
add();
break;
case 2:
remove();
break;
case 3:
query();
break;
case 4:
showRanking();
break;
case 5:
showStatics();
break;
}
puts("Welcome to Student Performance Management System (SPMS).\n");
puts("1 - Add");
puts("2 - Remove");
puts("3 - Query");
puts("4 - Show ranking");
puts("5 - Show Statistics");
puts("0 - Exit");
puts("");
} while (scanf("%d", &option) && option);
}
private:
void add() {
char SID[99];
puts("Please enter the SID, CID, name and four scores. Enter 0 to finish.");
while (scanf("%s", SID) && string(SID) != "0") {
int CID;
char name[99];
vector<int> scores;
scanf("%d%s", &CID, name);
for (int i = 0; i < courses.size(); i++) {
int score;
scanf("%d", &score);
scores.PB(score);
}
bool already = false;
for (int i = 0; i < students.size() && !already; i++) {
already = (students[i].SID == SID);
}
if (already) {
puts("Duplicated SID.");
} else {
students.PB(Student(SID, CID, name, scores));
}
puts("Please enter the SID, CID, name and four scores. Enter 0 to finish.");
}
}
void remove() {
char keyword[99];
puts("Please enter SID or name. Enter 0 to finish.");
while (scanf("%s", keyword) && string(keyword) != "0") {
int removedNum = 0;
for (int i = 0; i < students.size(); i++) {
Student & student = students[i];
if ((student.SID == keyword) || (student.name == keyword)) {
students.erase(students.begin() + i--);
removedNum++;
}
}
printf("%d student(s) removed.\n", removedNum);
puts("Please enter SID or name. Enter 0 to finish.");
}
}
void query() {
char keyword[99];
puts("Please enter SID or name. Enter 0 to finish.");
while (scanf("%s", keyword) && string(keyword) != "0") {
adjustRank();
for (int i = 0; i < students.size(); i++) {
Student & student = students[i];
if ((student.SID == keyword) || (student.name == keyword)) {
printf("%d %s %d %s", rankOfScore[student.total], student.SID.c_str(), student.CID, student.name.c_str());
for (int j = 0; j < student.scores.size(); j++) {
printf(" %d", student.scores[j]);
}
printf(" %d %.2lf\n", student.total, student.average + 1e-5);
}
}
puts("Please enter SID or name. Enter 0 to finish.");
}
}
void showRanking() {
puts("Showing the ranklist hurts students' self-esteem. Don't do that.");
}
void showStatics() {
puts("Please enter class ID, 0 for the whole statistics.");
int CID;
scanf("%d", &CID);
for (int c = 0; c < courses.size(); c++) {
puts(courses[c].c_str());
int num = 0, total = 0, passed = 0;
for (int i = 0; i < students.size(); i++) {
Student & student = students[i];
if (!CID || (student.CID == CID)) {
num++;
total += student.scores[c];
passed += (student.scores[c] >= 60);
}
}
printf("Average Score: %.2lf\n", total / (double)(num == 0 ? 1 : num) + 1e-5);
printf("Number of passed students: %d\n", passed);
printf("Number of failed students: %d\n", num - passed);
puts("");
}
vector<int> passedNum(courses.size() + 1, 0);
for (int i = 0; i < students.size(); i++) {
Student & student = students[i];
if (!CID || (student.CID == CID)) {
int passed = 0;
for (int c = 0; c < courses.size(); c++) {
passed += (student.scores[c] >= 60);
}
passedNum[passed]++;
}
}
puts("Overall:");
printf("Number of students who passed all subjects: %d\n", passedNum.back());
for (int i = passedNum.size() - 2; i > 0; i--) {
passedNum[i] += passedNum[i + 1];
printf("Number of students who passed %d or more subjects: %d\n", i, passedNum[i]);
}
printf("Number of students who failed all subjects: %d\n", passedNum[0]);
puts("");
}
void adjustRank() {
rankOfScore.clear();
vector<int> allScores;
for (int i = 0; i < students.size(); i++) {
allScores.PB(students[i].total);
}
sort(allScores.begin(), allScores.end());
reverse(allScores.begin(), allScores.end());
for (int i = 0; i < allScores.size(); i++) {
if (rankOfScore.find(allScores[i]) == rankOfScore.end()) {
rankOfScore[allScores[i]] = i + 1;
}
}
}
vector<Course> courses;
vector<Student> students;
map<int, int> rankOfScore;
};
int main() {
vector<Course> courses;
courses.PB("Chinese");
courses.PB("Mathematics");
courses.PB("English");
courses.PB("Programming");
SPMS spms(courses);
spms.run();
return 0;
}
测试数据:
1
0011223344 1 John 79 98 91 100
0022334455 1 Tom 59 72 60 81
0011223344 2 Alice 100 100 100 100
2423475629 2 John 60 80 30 99
0
2
John
Tom
0
1
0011223344 1 John 79 98 91 100
0
1
0000000001 1 AA 1 2 3 4
0000000002 2 AB 2 3 4 5
0000000003 3 AC 3 4 5 6
0000000004 4 AA 4 5 6 7
0000000005 5 AB 5 6 7 8
0000000006 6 AC 6 7 8 9
0000000007 7 AA 7 8 9 10
0000000008 8 AB 8 9 10 11
0000000009 9 AC 9 10 11 12
0000000010 10 AA 10 11 12 13
0000000011 11 AB 11 12 13 14
0000000012 12 AC 12 13 14 15
0000000013 13 AA 13 14 15 16
0000000014 14 AB 14 15 16 17
0000000015 15 AC 15 16 17 18
0000000016 16 AA 16 17 18 19
0000000017 17 AB 17 18 19 20
0000000018 18 AC 18 19 20 21
0000000019 19 AA 19 20 21 22
0000000020 20 AB 20 21 22 23
0000000021 1 AC 21 22 23 24
0000000022 2 AA 22 23 24 25
0000000023 3 AB 23 24 25 26
0000000024 4 AC 24 25 26 27
0000000025 5 AA 25 26 27 28
0000000026 6 AB 26 27 28 29
0000000027 7 AC 27 28 29 30
0000000028 8 AA 28 29 30 31
0000000029 9 AB 29 30 31 32
0000000030 10 AC 30 31 32 33
0000000031 11 AA 31 32 33 34
0000000032 12 AB 32 33 34 35
0000000033 13 AC 33 34 35 36
0000000034 14 AA 34 35 36 37
0000000035 15 AB 35 36 37 38
0000000036 16 AC 36 37 38 39
0000000037 17 AA 37 38 39 40
0000000038 18 AB 38 39 40 41
0000000039 19 AC 39 40 41 42
0000000040 20 AA 40 41 42 43
0000000041 1 AB 41 42 43 44
0000000042 2 AC 42 43 44 45
0000000043 3 AA 43 44 45 46
0000000044 4 AB 44 45 46 47
0000000045 5 AC 45 46 47 48
0000000046 6 AA 46 47 48 49
0000000047 7 AB 47 48 49 50
0000000048 8 AC 48 49 50 51
0000000049 9 AA 49 50 51 52
0000000050 10 AB 50 51 52 53
0000000051 11 AC 51 52 53 54
0000000052 12 AA 52 53 54 55
0000000053 13 AB 53 54 55 56
0000000054 14 AC 54 55 56 57
0000000055 15 AA 55 56 57 58
0000000056 16 AB 56 57 58 59
0000000057 17 AC 57 58 59 60
0000000058 18 AA 58 59 60 61
0000000059 19 AB 59 60 61 62
0000000060 20 AC 60 61 62 63
0000000061 1 AA 61 62 63 64
0000000062 2 AB 62 63 64 65
0000000063 3 AC 63 64 65 66
0000000064 4 AA 64 65 66 67
0000000065 5 AB 65 66 67 68
0000000066 6 AC 66 67 68 69
0000000067 7 AA 67 68 69 70
0000000068 8 AB 68 69 70 71
0000000069 9 AC 69 70 71 72
0000000070 10 AA 70 71 72 73
0000000071 11 AB 71 72 73 74
0000000072 12 AC 72 73 74 75
0000000073 13 AA 73 74 75 76
0000000074 14 AB 74 75 76 77
0000000075 15 AC 75 76 77 78
0000000076 16 AA 76 77 78 79
0000000077 17 AB 77 78 79 80
0000000078 18 AC 78 79 80 81
0000000079 19 AA 79 80 81 82
0000000080 20 AB 80 81 82 83
0000000081 1 AC 81 82 83 84
0000000082 2 AA 82 83 84 85
0000000083 3 AB 83 84 85 86
0000000084 4 AC 84 85 86 87
0000000085 5 AA 85 86 87 88
0000000086 6 AB 86 87 88 89
0000000087 7 AC 87 88 89 90
0000000088 8 AA 88 89 90 91
0000000089 9 AB 89 90 91 92
0000000090 10 AC 90 91 92 93
0000000091 11 AA 91 92 93 94
0000000092 12 AB 92 93 94 95
0000000093 13 AC 93 94 95 96
0000000094 14 AA 94 95 96 97
0000000095 15 AB 95 96 97 98
0000000096 16 AC 96 97 98 99
0000000097 17 AA 97 98 99 100
0000000098 18 AB 98 99 100 1
0000000099 19 AC 99 100 1 2
0000000100 20 AA 100 1 2 3
0
3
0022334455
John
0
5
1
2
0011223344
0
5
0
4
5
1
5
2
5
3
5
4
5
6
5
20
2
AA
0
1
0000000001 1 AA 1 2 3 4
0000000002 2 AB 2 3 4 5
0000000003 3 AC 3 4 5 6
0000000004 4 AA 4 5 6 7
0000000005 5 AB 5 6 7 8
0000000006 6 AC 6 7 8 9
0000000007 7 AA 7 8 9 10
0000000008 8 AB 8 9 10 11
0000000009 9 AC 9 10 11 12
0000000010 10 AA 10 11 12 13
0000000011 11 AB 11 12 13 14
0000000012 12 AC 12 13 14 15
0000000013 13 AA 13 14 15 16
0000000014 14 AB 14 15 16 17
0000000015 15 AC 15 16 17 18
0000000016 16 AA 16 17 18 19
0000000017 17 AB 17 18 19 20
0000000018 18 AC 18 19 20 21
0000000019 19 AA 19 20 21 22
0000000020 20 AB 20 21 22 23
0000000021 1 AC 21 22 23 24
0000000022 2 AA 22 23 24 25
0000000023 3 AB 23 24 25 26
0000000024 4 AC 24 25 26 27
0000000025 5 AA 25 26 27 28
0000000026 6 AB 26 27 28 29
0000000027 7 AC 27 28 29 30
0000000028 8 AA 28 29 30 31
0000000029 9 AB 29 30 31 32
0000000030 10 AC 30 31 32 33
0000000031 11 AA 31 32 33 34
0000000032 12 AB 32 33 34 35
0000000033 13 AC 33 34 35 36
0000000034 14 AA 34 35 36 37
0000000035 15 AB 35 36 37 38
0000000036 16 AC 36 37 38 39
0000000037 17 AA 37 38 39 40
0000000038 18 AB 38 39 40 41
0000000039 19 AC 39 40 41 42
0000000040 20 AA 40 41 42 43
0000000041 1 AB 41 42 43 44
0000000042 2 AC 42 43 44 45
0000000043 3 AA 43 44 45 46
0000000044 4 AB 44 45 46 47
0000000045 5 AC 45 46 47 48
0000000046 6 AA 46 47 48 49
0000000047 7 AB 47 48 49 50
0000000048 8 AC 48 49 50 51
0000000049 9 AA 49 50 51 52
0000000050 10 AB 50 51 52 53
0000000051 11 AC 51 52 53 54
0000000052 12 AA 52 53 54 55
0000000053 13 AB 53 54 55 56
0000000054 14 AC 54 55 56 57
0000000055 15 AA 55 56 57 58
0000000056 16 AB 56 57 58 59
0000000057 17 AC 57 58 59 60
0000000058 18 AA 58 59 60 61
0000000059 19 AB 59 60 61 62
0000000060 20 AC 60 61 62 63
0000000061 1 AA 61 62 63 64
0000000062 2 AB 62 63 64 65
0000000063 3 AC 63 64 65 66
0000000064 4 AA 64 65 66 67
0000000065 5 AB 65 66 67 68
0000000066 6 AC 66 67 68 69
0000000067 7 AA 67 68 69 70
0000000068 8 AB 68 69 70 71
0000000069 9 AC 69 70 71 72
0000000070 10 AA 70 71 72 73
0000000071 11 AB 71 72 73 74
0000000072 12 AC 72 73 74 75
0000000073 13 AA 73 74 75 76
0000000074 14 AB 74 75 76 77
0000000075 15 AC 75 76 77 78
0000000076 16 AA 76 77 78 79
0000000077 17 AB 77 78 79 80
0000000078 18 AC 78 79 80 81
0000000079 19 AA 79 80 81 82
0000000080 20 AB 80 81 82 83
0000000081 1 AC 81 82 83 84
0000000082 2 AA 82 83 84 85
0000000083 3 AB 83 84 85 86
0000000084 4 AC 84 85 86 87
0000000085 5 AA 85 86 87 88
0000000086 6 AB 86 87 88 89
0000000087 7 AC 87 88 89 90
0000000088 8 AA 88 89 90 91
0000000089 9 AB 89 90 91 92
0000000090 10 AC 90 91 92 93
0000000091 11 AA 91 92 93 94
0000000092 12 AB 92 93 94 95
0000000093 13 AC 93 94 95 96
0000000094 14 AA 94 95 96 97
0000000095 15 AB 95 96 97 98
0000000096 16 AC 96 97 98 99
0000000097 17 AA 97 98 99 100
0000000098 18 AB 98 99 100 1
0000000099 19 AC 99 100 1 2
0000000100 20 AA 100 1 2 3
0
2
AC
0
1
0000000001 1 AA 1 2 3 4
0000000002 2 AB 2 3 4 5
0000000003 3 AC 3 4 5 6
0000000004 4 AA 4 5 6 7
0000000005 5 AB 5 6 7 8
0000000006 6 AC 6 7 8 9
0000000007 7 AA 7 8 9 10
0000000008 8 AB 8 9 10 11
0000000009 9 AC 9 10 11 12
0000000010 10 AA 10 11 12 13
0000000011 11 AB 11 12 13 14
0000000012 12 AC 12 13 14 15
0000000013 13 AA 13 14 15 16
0000000014 14 AB 14 15 16 17
0000000015 15 AC 15 16 17 18
0000000016 16 AA 16 17 18 19
0000000017 17 AB 17 18 19 20
0000000018 18 AC 18 19 20 21
0000000019 19 AA 19 20 21 22
0000000020 20 AB 20 21 22 23
0000000021 1 AC 21 22 23 24
0000000022 2 AA 22 23 24 25
0000000023 3 AB 23 24 25 26
0000000024 4 AC 24 25 26 27
0000000025 5 AA 25 26 27 28
0000000026 6 AB 26 27 28 29
0000000027 7 AC 27 28 29 30
0000000028 8 AA 28 29 30 31
0000000029 9 AB 29 30 31 32
0000000030 10 AC 30 31 32 33
0000000031 11 AA 31 32 33 34
0000000032 12 AB 32 33 34 35
0000000033 13 AC 33 34 35 36
0000000034 14 AA 34 35 36 37
0000000035 15 AB 35 36 37 38
0000000036 16 AC 36 37 38 39
0000000037 17 AA 37 38 39 40
0000000038 18 AB 38 39 40 41
0000000039 19 AC 39 40 41 42
0000000040 20 AA 40 41 42 43
0000000041 1 AB 41 42 43 44
0000000042 2 AC 42 43 44 45
0000000043 3 AA 43 44 45 46
0000000044 4 AB 44 45 46 47
0000000045 5 AC 45 46 47 48
0000000046 6 AA 46 47 48 49
0000000047 7 AB 47 48 49 50
0000000048 8 AC 48 49 50 51
0000000049 9 AA 49 50 51 52
0000000050 10 AB 50 51 52 53
0000000051 11 AC 51 52 53 54
0000000052 12 AA 52 53 54 55
0000000053 13 AB 53 54 55 56
0000000054 14 AC 54 55 56 57
0000000055 15 AA 55 56 57 58
0000000056 16 AB 56 57 58 59
0000000057 17 AC 57 58 59 60
0000000058 18 AA 58 59 60 61
0000000059 19 AB 59 60 61 62
0000000060 20 AC 60 61 62 63
0000000061 1 AA 61 62 63 64
0000000062 2 AB 62 63 64 65
0000000063 3 AC 63 64 65 66
0000000064 4 AA 64 65 66 67
0000000065 5 AB 65 66 67 68
0000000066 6 AC 66 67 68 69
0000000067 7 AA 67 68 69 70
0000000068 8 AB 68 69 70 71
0000000069 9 AC 69 70 71 72
0000000070 10 AA 70 71 72 73
0000000071 11 AB 71 72 73 74
0000000072 12 AC 72 73 74 75
0000000073 13 AA 73 74 75 76
0000000074 14 AB 74 75 76 77
0000000075 15 AC 75 76 77 78
0000000076 16 AA 76 77 78 79
0000000077 17 AB 77 78 79 80
0000000078 18 AC 78 79 80 81
0000000079 19 AA 79 80 81 82
0000000080 20 AB 80 81 82 83
0000000081 1 AC 81 82 83 84
0000000082 2 AA 82 83 84 85
0000000083 3 AB 83 84 85 86
0000000084 4 AC 84 85 86 87
0000000085 5 AA 85 86 87 88
0000000086 6 AB 86 87 88 89
0000000087 7 AC 87 88 89 90
0000000088 8 AA 88 89 90 91
0000000089 9 AB 89 90 91 92
0000000090 10 AC 90 91 92 93
0000000091 11 AA 91 92 93 94
0000000092 12 AB 92 93 94 95
0000000093 13 AC 93 94 95 96
0000000094 14 AA 94 95 96 97
0000000095 15 AB 95 96 97 98
0000000096 16 AC 96 97 98 99
0000000097 17 AA 97 98 99 100
0000000098 18 AB 98 99 100 1
0000000099 19 AC 99 100 1 2
0000000100 20 AA 100 1 2 3
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
5
10
5
11
5
12
5
13
5
14
5
15
5
16
5
17
5
18
5
19
5
20
5
0
4
3
AB
AC
AA
AD
John
Tom
0
5
0
2
AB
AC
AA
0
5
0
2
John
Tom
AA
0
5
0
1
0000000001 1 AA2asdffds 1 2 3 4
0000000002 2 AB3459fdsw 2 3 4 5
0000000003 3 AA3asdffds 3 4 5 6
0000000004 4 AB3460fdsw 4 5 6 7
0000000005 5 AA4asdffds 5 6 7 8
0000000006 6 AB3461fdsw 6 7 8 9
0000000007 7 AA5asdffds 7 8 9 10
0000000008 8 AB3462fdsw 8 9 10 11
0000000009 9 AA6asdffds 9 10 11 12
0000000010 10 AA3asdffds 10 11 12 13
0000000011 11 AB3460fdsw 11 12 13 14
0000000012 12 AA4asdffds 12 13 14 15
0000000013 13 AB3461fdsw 13 14 15 16
0000000014 14 AA5asdffds 14 15 16 17
0000000015 15 AB3462fdsw 15 16 17 18
0000000016 16 AA6asdffds 16 17 18 19
0000000017 17 AB3463fdsw 17 18 19 20
0000000018 18 AA7asdffds 18 19 20 21
0000000019 19 AA4asdffds 19 20 21 22
0000000020 20 AB3461fdsw 20 21 22 23
0000000021 1 AA5asdffds 21 22 23 24
0000000022 2 AB3462fdsw 22 23 24 25
0000000023 3 AA6asdffds 23 24 25 26
0000000024 4 AB3463fdsw 24 25 26 27
0000000025 5 AA7asdffds 25 26 27 28
0000000026 6 AB3464fdsw 26 27 28 29
0000000027 7 AA8asdffds 27 28 29 30
0000000028 8 AA5asdffds 28 29 30 31
0000000029 9 AB3462fdsw 29 30 31 32
0000000030 10 AA6asdffds 30 31 32 33
0000000031 11 AB3463fdsw 31 32 33 34
0000000032 12 AA7asdffds 32 33 34 35
0000000033 13 AB3464fdsw 33 34 35 36
0000000034 14 AA8asdffds 34 35 36 37
0000000035 15 AB3465fdsw 35 36 37 38
0000000036 16 AA9asdffds 36 37 38 39
0000000037 17 AA6asdffds 37 38 39 40
0000000038 18 AB3463fdsw 38 39 40 41
0000000039 19 AA7asdffds 39 40 41 42
0000000040 20 AB3464fdsw 40 41 42 43
0000000041 1 AA8asdffds 41 42 43 44
0000000042 2 AB3465fdsw 42 43 44 45
0000000043 3 AA9asdffds 43 44 45 46
0000000044 4 AB3466fdsw 44 45 46 47
0000000045 5 AA10asdffds 45 46 47 48
0000000046 6 AA7asdffds 46 47 48 49
0000000047 7 AB3464fdsw 47 48 49 50
0000000048 8 AA8asdffds 48 49 50 51
0000000049 9 AB3465fdsw 49 50 51 52
0000000050 10 AA9asdffds 50 51 52 53
0000000051 11 AB3466fdsw 51 52 53 54
0000000052 12 AA10asdffds 52 53 54 55
0000000053 13 AB3467fdsw 53 54 55 56
0000000054 14 AA11asdffds 54 55 56 57
0000000055 15 AA8asdffds 55 56 57 58
0000000056 16 AB3465fdsw 56 57 58 59
0000000057 17 AA9asdffds 57 58 59 60
0000000058 18 AB3466fdsw 58 59 60 61
0000000059 19 AA10asdffds 59 60 61 62
0000000060 20 AB3467fdsw 60 61 62 63
0000000061 1 AA11asdffds 61 62 63 64
0000000062 2 AB3468fdsw 62 63 64 65
0000000063 3 AA12asdffds 63 64 65 66
0000000064 4 AA9asdffds 64 65 66 67
0000000065 5 AB3466fdsw 65 66 67 68
0000000066 6 AA10asdffds 66 67 68 69
0000000067 7 AB3467fdsw 67 68 69 70
0000000068 8 AA11asdffds 68 69 70 71
0000000069 9 AB3468fdsw 69 70 71 72
0000000070 10 AA12asdffds 70 71 72 73
0000000071 11 AB3469fdsw 71 72 73 74
0000000072 12 AA13asdffds 72 73 74 75
0000000073 13 AA10asdffds 73 74 75 76
0000000074 14 AB3467fdsw 74 75 76 77
0000000075 15 AA11asdffds 75 76 77 78
0000000076 16 AB3468fdsw 76 77 78 79
0000000077 17 AA12asdffds 77 78 79 80
0000000078 18 AB3469fdsw 78 79 80 81
0000000079 19 AA13asdffds 79 80 81 82
0000000080 20 AB3470fdsw 80 81 82 83
0000000081 1 AA14asdffds 81 82 83 84
0000000082 2 AA11asdffds 82 83 84 85
0000000083 3 AB3468fdsw 83 84 85 86
0000000084 4 AA12asdffds 84 85 86 87
0000000085 5 AB3469fdsw 85 86 87 88
0000000086 6 AA13asdffds 86 87 88 89
0000000087 7 AB3470fdsw 87 88 89 90
0000000088 8 AA14asdffds 88 89 90 91
0000000089 9 AB3471fdsw 89 90 91 92
0000000090 10 AA15asdffds 90 91 92 93
0000000091 11 AA12asdffds 91 92 93 94
0000000092 12 AB3469fdsw 92 93 94 95
0000000093 13 AA13asdffds 93 94 95 96
0000000094 14 AB3470fdsw 94 95 96 97
0000000095 15 AA14asdffds 95 96 97 98
0000000096 16 AB3471fdsw 96 97 98 99
0000000097 17 AA15asdffds 97 98 99 100
0000000098 18 AB3472fdsw 98 99 100 1
0000000099 19 AA16asdffds 99 100 1 2
0000000100 20 AA13asdffds 100 1 2 3
0000000001 1 AA2asdffds 1 2 3 4
0000000002 2 AB3459fdsw 2 3 4 5
0000000003 3 AA3asdffds 3 4 5 6
0000000004 4 AB3460fdsw 4 5 6 7
0000000005 5 AA4asdffds 5 6 7 8
0000000006 6 AB3461fdsw 6 7 8 9
0000000007 7 AA5asdffds 7 8 9 10
0000000008 8 AB3462fdsw 8 9 10 11
0000000009 9 AA6asdffds 9 10 11 12
0000000010 10 AA3asdffds 10 11 12 13
0000000011 11 AB3460fdsw 11 12 13 14
0000000012 12 AA4asdffds 12 13 14 15
0000000013 13 AB3461fdsw 13 14 15 16
0000000014 14 AA5asdffds 14 15 16 17
0000000015 15 AB3462fdsw 15 16 17 18
0000000016 16 AA6asdffds 16 17 18 19
0000000017 17 AB3463fdsw 17 18 19 20
0000000018 18 AA7asdffds 18 19 20 21
0000000019 19 AA4asdffds 19 20 21 22
0000000020 20 AB3461fdsw 20 21 22 23
0000000021 1 AA5asdffds 21 22 23 24
0000000022 2 AB3462fdsw 22 23 24 25
0000000023 3 AA6asdffds 23 24 25 26
0000000024 4 AB3463fdsw 24 25 26 27
0000000025 5 AA7asdffds 25 26 27 28
0000000026 6 AB3464fdsw 26 27 28 29
0000000027 7 AA8asdffds 27 28 29 30
0000000028 8 AA5asdffds 28 29 30 31
0000000029 9 AB3462fdsw 29 30 31 32
0000000030 10 AA6asdffds 30 31 32 33
0000000031 11 AB3463fdsw 31 32 33 34
0000000032 12 AA7asdffds 32 33 34 35
0000000033 13 AB3464fdsw 33 34 35 36
0000000034 14 AA8asdffds 34 35 36 37
0000000035 15 AB3465fdsw 35 36 37 38
0000000036 16 AA9asdffds 36 37 38 39
0000000037 17 AA6asdffds 37 38 39 40
0000000038 18 AB3463fdsw 38 39 40 41
0000000039 19 AA7asdffds 39 40 41 42
0000000040 20 AB3464fdsw 40 41 42 43
0000000041 1 AA8asdffds 41 42 43 44
0000000042 2 AB3465fdsw 42 43 44 45
0000000043 3 AA9asdffds 43 44 45 46
0000000044 4 AB3466fdsw 44 45 46 47
0000000045 5 AA10asdffds 45 46 47 48
0000000046 6 AA7asdffds 46 47 48 49
0000000047 7 AB3464fdsw 47 48 49 50
0000000048 8 AA8asdffds 48 49 50 51
0000000049 9 AB3465fdsw 49 50 51 52
0000000050 10 AA9asdffds 50 51 52 53
0000000051 11 AB3466fdsw 51 52 53 54
0000000052 12 AA10asdffds 52 53 54 55
0000000053 13 AB3467fdsw 53 54 55 56
0000000054 14 AA11asdffds 54 55 56 57
0000000055 15 AA8asdffds 55 56 57 58
0000000056 16 AB3465fdsw 56 57 58 59
0000000057 17 AA9asdffds 57 58 59 60
0000000058 18 AB3466fdsw 58 59 60 61
0000000059 19 AA10asdffds 59 60 61 62
0000000060 20 AB3467fdsw 60 61 62 63
0000000061 1 AA11asdffds 61 62 63 64
0000000062 2 AB3468fdsw 62 63 64 65
0000000063 3 AA12asdffds 63 64 65 66
0000000064 4 AA9asdffds 64 65 66 67
0000000065 5 AB3466fdsw 65 66 67 68
0000000066 6 AA10asdffds 66 67 68 69
0000000067 7 AB3467fdsw 67 68 69 70
0000000068 8 AA11asdffds 68 69 70 71
0000000069 9 AB3468fdsw 69 70 71 72
0000000070 10 AA12asdffds 70 71 72 73
0000000071 11 AB3469fdsw 71 72 73 74
0000000072 12 AA13asdffds 72 73 74 75
0000000073 13 AA10asdffds 73 74 75 76
0000000074 14 AB3467fdsw 74 75 76 77
0000000075 15 AA11asdffds 75 76 77 78
0000000076 16 AB3468fdsw 76 77 78 79
0000000077 17 AA12asdffds 77 78 79 80
0000000078 18 AB3469fdsw 78 79 80 81
0000000079 19 AA13asdffds 79 80 81 82
0000000080 20 AB3470fdsw 80 81 82 83
0000000081 1 AA14asdffds 81 82 83 84
0000000082 2 AA11asdffds 82 83 84 85
0000000083 3 AB3468fdsw 83 84 85 86
0000000084 4 AA12asdffds 84 85 86 87
0000000085 5 AB3469fdsw 85 86 87 88
0000000086 6 AA13asdffds 86 87 88 89
0000000087 7 AB3470fdsw 87 88 89 90
0000000088 8 AA14asdffds 88 89 90 91
0000000089 9 AB3471fdsw 89 90 91 92
0000000090 10 AA15asdffds 90 91 92 93
0000000091 11 AA12asdffds 91 92 93 94
0000000092 12 AB3469fdsw 92 93 94 95
0000000093 13 AA13asdffds 93 94 95 96
0000000094 14 AB3470fdsw 94 95 96 97
0000000095 15 AA14asdffds 95 96 97 98
0000000096 16 AB3471fdsw 96 97 98 99
0000000097 17 AA15asdffds 97 98 99 100
0000000098 18 AB3472fdsw 98 99 100 1
0000000099 19 AA16asdffds 99 100 1 2
0000000100 20 AA13asdffds 100 1 2 3
0
5
0
0