Sunday, September 29, 2013

UVa 11056 - Formula 1

Accepted date: 2013-09-29
Ranking (as of 2013-09-29): 110 out of 746
Language: C++

/*
  UVa 11056 - Formula 1

  To build using Visual Studio 2012:
    cl -EHsc -O2 UVa_11056_Formula_1.cpp
*/

#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;

#ifdef ONLINE_JUDGE
#define _stricmp strcasecmp
#endif

const int nr_name_chars_max = 31, nr_pilots_max = 100;

struct pilot {
  char name_[nr_name_chars_max + 1];
  int lap_;

  bool operator<(const pilot& p) const;
} pilots[nr_pilots_max];

bool pilot::operator<(const pilot& p) const
{
  if (lap_ < p.lap_)
    return true;
  else if (lap_ > p.lap_)
    return false;
  else
    return _stricmp(name_, p.name_) < 0;
}

int main()
{
  int n;
  while (scanf("%d", &n) != EOF) {
    for (int i = 0; i < n; i++) {
      int m, s, ms;
      scanf("%s %*s %d %*s %d %*s %d %*s", pilots[i].name_, &m, &s, &ms);
      pilots[i].lap_ = m * 60000 + s * 1000 + ms;
#ifdef DEBUG
      printf("%s %d\n", pilots[i].name_, pilots[i].lap_);
#endif
    }
    sort(pilots, pilots + n);
    for (int i = 0, r = 1; i < n; r++) {
      printf("Row %d\n", r);
      puts(pilots[i++].name_);
      if (i < n)
        puts(pilots[i++].name_);
    }
    putchar('\n');
  }
  return 0;
}

No comments:

Post a Comment