Advertisement
frostblooded

Untitled

Oct 18th, 2017
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.99 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Time {
  6. public:
  7.     unsigned long long minutes;
  8.     int seconds;
  9.  
  10.     Time(int minutes, int seconds)
  11.     : minutes(minutes), seconds(seconds) {}
  12.  
  13.     void addSeconds(int value) {
  14.         seconds += value;
  15.  
  16.         while(seconds >= 60) {
  17.             seconds -= 60;
  18.             minutes++;
  19.         }
  20.     }
  21.  
  22.     int to_seconds() const {
  23.         return seconds + minutes * 60;
  24.     }
  25.  
  26.     bool operator<(const Time& time) const {
  27.         return this->to_seconds() < time.to_seconds();
  28.     }
  29.  
  30.     string to_string() {
  31.         return minutes + " " + seconds;
  32.     }
  33. };
  34.  
  35.  
  36. class Contestant {
  37. public:
  38.     int id;
  39.     Time time;
  40.     int hits;
  41.     int normalized = false;
  42.  
  43.     Contestant(int id, int minutes, int seconds, int hits)
  44.     : id(id), time(minutes, seconds), hits(hits) {}
  45.  
  46.     static Contestant* readFromCin(int id) {
  47.         int m, s, i;
  48.         cin >> m >> s >> i;
  49.         return new Contestant(id, m, s, i);
  50.     }
  51.  
  52.     void normalize() {
  53.         for(int i = hits; i < 5; i++) {
  54.             hits++;
  55.             time.addSeconds(30);
  56.         }
  57.  
  58.         cout << "Normalized: " << time.minutes << " " << time.seconds << endl;
  59.     }
  60.  
  61.     char get_letter() {
  62.         return 'A' + id;
  63.     }
  64. };
  65.  
  66. Contestant* get_winner(Contestant* contestants[3]) {
  67.     Contestant* winner = contestants[0];
  68.     winner->normalize();
  69.  
  70.     for(int i = 1; i < 3; i++) {
  71.         contestants[i]->normalize();
  72.  
  73.         if(contestants[i]->time < winner->time) {
  74.             winner = contestants[i];
  75.         }
  76.     }
  77.  
  78.     return winner;
  79. }
  80.  
  81. int main() {
  82.     Contestant* contestants[3];
  83.  
  84.     for(int i = 0; i < 3; i++) {
  85.         contestants[i] = Contestant::readFromCin(i);
  86.     }
  87.  
  88.     Contestant* winner = get_winner(contestants);
  89.     cout << winner->time.minutes << " " << winner->time.seconds << " "
  90.          << winner->get_letter() << endl;
  91.  
  92.     for(int i = 0; i < 3; i++) {
  93.         delete contestants[i];
  94.     }
  95.  
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement