Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Time {
- public:
- unsigned long long minutes;
- int seconds;
- Time(int minutes, int seconds)
- : minutes(minutes), seconds(seconds) {}
- void addSeconds(int value) {
- seconds += value;
- while(seconds >= 60) {
- seconds -= 60;
- minutes++;
- }
- }
- int to_seconds() const {
- return seconds + minutes * 60;
- }
- bool operator<(const Time& time) const {
- return this->to_seconds() < time.to_seconds();
- }
- string to_string() {
- return minutes + " " + seconds;
- }
- };
- class Contestant {
- public:
- int id;
- Time time;
- int hits;
- int normalized = false;
- Contestant(int id, int minutes, int seconds, int hits)
- : id(id), time(minutes, seconds), hits(hits) {}
- static Contestant* readFromCin(int id) {
- int m, s, i;
- cin >> m >> s >> i;
- return new Contestant(id, m, s, i);
- }
- void normalize() {
- for(int i = hits; i < 5; i++) {
- hits++;
- time.addSeconds(30);
- }
- cout << "Normalized: " << time.minutes << " " << time.seconds << endl;
- }
- char get_letter() {
- return 'A' + id;
- }
- };
- Contestant* get_winner(Contestant* contestants[3]) {
- Contestant* winner = contestants[0];
- winner->normalize();
- for(int i = 1; i < 3; i++) {
- contestants[i]->normalize();
- if(contestants[i]->time < winner->time) {
- winner = contestants[i];
- }
- }
- return winner;
- }
- int main() {
- Contestant* contestants[3];
- for(int i = 0; i < 3; i++) {
- contestants[i] = Contestant::readFromCin(i);
- }
- Contestant* winner = get_winner(contestants);
- cout << winner->time.minutes << " " << winner->time.seconds << " "
- << winner->get_letter() << endl;
- for(int i = 0; i < 3; i++) {
- delete contestants[i];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement