#include <iostream>
#include <string>
#include <sstream>
using namespace std;
struct Student
{
string ID;
string name;
double grade;
};
int main() {
//ifstream inFile;
istream &inFile = cin;
Student* students = nullptr;
int counter = 0, capacity = 0;
string line, netID, studentName;
double grade1, grade2, grade3;
//inFile.open("Asg3Grades.txt"); //opens the file
while (getline(inFile, line)) {
istringstream iss(line);
if (iss >> netID >> studentName >> grade1 >> grade2 >> grade3) {
double average = (grade1 + grade2 + grade3) / 3;
if (counter == capacity)
{
Student *temp = new Student[capacity + 100];
for (int i = 0; i < counter; ++i)
temp[i] = students[i];
delete[] students;
students = temp;
capacity += 100;
}
students[counter].ID = netID;
students[counter].name = studentName;
students[counter].grade = average;
++counter;
}
}
//inFile.close(); //closes the file
for (int i = 0; i < counter; i++) {
cout << students[i].ID << ": " << students[i].name << " " << students[i].grade << endl;
}
delete[] students;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBTdHVkZW50CnsKCXN0cmluZyBJRDsKCXN0cmluZyBuYW1lOwoJZG91YmxlIGdyYWRlOwp9OwoKaW50IG1haW4oKSB7CgkvL2lmc3RyZWFtIGluRmlsZTsKCWlzdHJlYW0gJmluRmlsZSA9IGNpbjsKCQoJU3R1ZGVudCogc3R1ZGVudHMgPSBudWxscHRyOwoJaW50IGNvdW50ZXIgPSAwLCBjYXBhY2l0eSA9IDA7CgoJc3RyaW5nIGxpbmUsIG5ldElELCBzdHVkZW50TmFtZTsKCWRvdWJsZSBncmFkZTEsIGdyYWRlMiwgZ3JhZGUzOwoKCS8vaW5GaWxlLm9wZW4oIkFzZzNHcmFkZXMudHh0Iik7IC8vb3BlbnMgdGhlIGZpbGUKCgl3aGlsZSAoZ2V0bGluZShpbkZpbGUsIGxpbmUpKSB7CgogICAgCWlzdHJpbmdzdHJlYW0gaXNzKGxpbmUpOwoKICAgIAlpZiAoaXNzID4+IG5ldElEID4+IHN0dWRlbnROYW1lID4+IGdyYWRlMSA+PiBncmFkZTIgPj4gZ3JhZGUzKSB7CgogICAgICAgIAlkb3VibGUgYXZlcmFnZSA9IChncmFkZTEgKyBncmFkZTIgKyBncmFkZTMpIC8gMzsKCiAgICAgICAgICAgIGlmIChjb3VudGVyID09IGNhcGFjaXR5KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdHVkZW50ICp0ZW1wID0gbmV3IFN0dWRlbnRbY2FwYWNpdHkgKyAxMDBdOwogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyArK2kpCiAgICAgICAgICAgICAgICAgICAgdGVtcFtpXSA9IHN0dWRlbnRzW2ldOwogICAgICAgICAgICAgICAgZGVsZXRlW10gc3R1ZGVudHM7CiAgICAgICAgICAgICAgICBzdHVkZW50cyA9IHRlbXA7CiAgICAgICAgICAgICAgICBjYXBhY2l0eSArPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgCXN0dWRlbnRzW2NvdW50ZXJdLklEID0gbmV0SUQ7CiAgICAgICAgCXN0dWRlbnRzW2NvdW50ZXJdLm5hbWUgPSBzdHVkZW50TmFtZTsKICAgICAgICAJc3R1ZGVudHNbY291bnRlcl0uZ3JhZGUgPSBhdmVyYWdlOwoKICAgICAgICAJKytjb3VudGVyOwogICAgCX0KCX0KCgkvL2luRmlsZS5jbG9zZSgpOyAvL2Nsb3NlcyB0aGUgZmlsZQoKCWZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CiAgICAJY291dCA8PCBzdHVkZW50c1tpXS5JRCA8PCAiOiAiIDw8IHN0dWRlbnRzW2ldLm5hbWUgPDwgIiAiIDw8IHN0dWRlbnRzW2ldLmdyYWRlIDw8IGVuZGw7Cgl9CgoJZGVsZXRlW10gc3R1ZGVudHM7CglyZXR1cm4gMDsKfQ==