View Code of Problem 3861

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define PR printf
#define SC scanf
#define D "%ld"
int main()
{
  struct brand
  {
    char name[100][20];
    long p[100], q[100];
    double score[100];
  } phone, ans[100];
  long t, i, j, k, m, n, f;
  char sp[2] = "";
  long mid1;
  double mid2;
  char res[1000];
  long des[100];
  char tmp[30];
  long num;
  long rankID;
  SC(D, &t);
  for (i = 0; i < t; i++)
  {
    SC(D, &num);
    for (j = 0; j < num; j++)
    {
      SC("%s", phone.name[j]);
      SC(D, &phone.p[j]);
      SC(D, &phone.q[j]);
      phone.score[j] = 1.0 * phone.p[j] / phone.q[j];
    }

    for (m = 0; m < num - 1; m++)
    {
      for (n = 0; n < num - m - 1; n++)
      {
        if (phone.score[n] < phone.score[n + 1])
        {
          strcpy(tmp, phone.name[n]);
          strcpy(phone.name[n], phone.name[n + 1]);
          strcpy(phone.name[n + 1], tmp);
          mid2 = phone.score[n];
          phone.score[n] = phone.score[n + 1];
          phone.score[n + 1] = mid2;
          mid1 = phone.q[n];
          phone.q[n] = phone.q[n + 1];
          phone.q[n + 1] = mid1;
          mid1 = phone.p[n];
          phone.p[n] = phone.p[n + 1];
          phone.p[n + 1] = mid1;
        }
      }
    }

    for (j = 0; j < num; j++)
    {
      strcpy(ans[i].name[j], phone.name[j]);
      ans[i].p[j] = phone.p[j];
      ans[i].q[j] = phone.q[j];
    }
  }
  for (i = 0; i < t; i++)
  {
    for (j = 0; j < num; j++)
    {
			PR("%ld %s %ld %ld\n", j + 1, ans[i].name[j], ans[i].p[j], ans[i].q[j]);
    }
  }

  return 0;
}

Double click to view unformatted code.


Back to problem 3861