#include <iostream>
#include <vector>
using namespace std;
class Watch {
public:
void SetHours(int watchHours) {
hours = watchHours;
}
void SetMins(int watchMins) {
mins = watchMins;
}
virtual void PrintItem() {
cout << hours << ":" << mins << endl;
}
protected:
int hours;
int mins;
};
class SmartWatch : public Watch {
public:
void SetPercentage(int watchPercentage) {
batteryPercentage = watchPercentage;
}
void PrintItem() {
cout << hours << ":" << mins << " " << batteryPercentage << "%" << endl;
}
private:
int batteryPercentage;
};
int main() {
Watch* watch1;
Watch* watch2;
SmartWatch* watch3;
vector<Watch*> watchList;
unsigned int i;
watch1 = new Watch();
watch1->SetHours(6);
watch1->SetMins(47);
watch2 = new Watch();
watch2->SetHours(7);
watch2->SetMins(28);
watch3 = new SmartWatch();
watch3->SetHours(12);
watch3->SetMins(43);
watch3->SetPercentage(65);
watchList.push_back(watch2);
watchList.push_back(watch1);
watchList.push_back(watch3);
for (i = 0; i < watchList.size(); ++i) {
watchList.at(i)->PrintItem();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgV2F0Y2ggewpwdWJsaWM6CiAgIHZvaWQgU2V0SG91cnMoaW50IHdhdGNoSG91cnMpIHsKICAgICAgaG91cnMgPSB3YXRjaEhvdXJzOwogICB9CgogICB2b2lkIFNldE1pbnMoaW50IHdhdGNoTWlucykgewogICAgICBtaW5zID0gd2F0Y2hNaW5zOwogICB9CgogICB2aXJ0dWFsIHZvaWQgUHJpbnRJdGVtKCkgewogICAgICBjb3V0IDw8IGhvdXJzIDw8ICI6IiA8PCBtaW5zIDw8IGVuZGw7CiAgIH0KCnByb3RlY3RlZDoKICAgaW50IGhvdXJzOwogICBpbnQgbWluczsKfTsKCmNsYXNzIFNtYXJ0V2F0Y2ggOiBwdWJsaWMgV2F0Y2ggewpwdWJsaWM6CiAgIHZvaWQgU2V0UGVyY2VudGFnZShpbnQgd2F0Y2hQZXJjZW50YWdlKSB7CiAgICAgIGJhdHRlcnlQZXJjZW50YWdlID0gd2F0Y2hQZXJjZW50YWdlOwogICB9CgogICB2b2lkIFByaW50SXRlbSgpIHsKICAgICAgY291dCA8PCBob3VycyA8PCAiOiIgPDwgbWlucyA8PCAiICIgPDwgYmF0dGVyeVBlcmNlbnRhZ2UgPDwgIiUiIDw8IGVuZGw7CiAgIH0KCnByaXZhdGU6CiAgIGludCBiYXR0ZXJ5UGVyY2VudGFnZTsKfTsKCmludCBtYWluKCkgewogICBXYXRjaCogd2F0Y2gxOwogICBXYXRjaCogd2F0Y2gyOwogICBTbWFydFdhdGNoKiB3YXRjaDM7CgogICB2ZWN0b3I8V2F0Y2gqPiB3YXRjaExpc3Q7CiAgIHVuc2lnbmVkIGludCBpOwoKICAgd2F0Y2gxID0gbmV3IFdhdGNoKCk7CiAgIHdhdGNoMS0+U2V0SG91cnMoNik7CiAgIHdhdGNoMS0+U2V0TWlucyg0Nyk7CiAgIAogICB3YXRjaDIgPSBuZXcgV2F0Y2goKTsKICAgd2F0Y2gyLT5TZXRIb3Vycyg3KTsKICAgd2F0Y2gyLT5TZXRNaW5zKDI4KTsKICAgCiAgIHdhdGNoMyA9IG5ldyBTbWFydFdhdGNoKCk7CiAgIHdhdGNoMy0+U2V0SG91cnMoMTIpOwogICB3YXRjaDMtPlNldE1pbnMoNDMpOwogICB3YXRjaDMtPlNldFBlcmNlbnRhZ2UoNjUpOwoKICAgd2F0Y2hMaXN0LnB1c2hfYmFjayh3YXRjaDIpOwogICB3YXRjaExpc3QucHVzaF9iYWNrKHdhdGNoMSk7CiAgIHdhdGNoTGlzdC5wdXNoX2JhY2sod2F0Y2gzKTsKCiAgIGZvciAoaSA9IDA7IGkgPCB3YXRjaExpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgd2F0Y2hMaXN0LmF0KGkpLT5QcmludEl0ZW0oKTsKICAgfQogICAKICAgcmV0dXJuIDA7Cn0=