Advertisement
Guest User

Untitled

a guest
Dec 5th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. typedef struct _dev
  6. {
  7.     int og;
  8.     int ot;
  9.     int ob;
  10. } dev;
  11.  
  12. int compare (const void* a, const void* b)
  13. {
  14.     const dev *y = b;
  15.     const dev *x = a;
  16.  
  17.     if ((pow(90 - x->og, 2) + pow(60 - x->ot, 2) + pow(90 - x->ob, 2)) == (pow(90 - y->og, 2) + pow(60 - y->ot, 2) + pow(90 - y->ob, 2)))
  18.     {
  19.         if ((x->og == y->og) && (x->ot == y->ot))
  20.         {
  21.             return y->ob - x->ob ;
  22.         }
  23.         if ((x->og == y->og) && (x->ot != y->ot))
  24.         {
  25.             return x->ot - y->ot;
  26.         }
  27.         else
  28.         {
  29.             return y->og - x->og;
  30.         }
  31.     }
  32.     else
  33.     {
  34.         return (pow(90 - x->og, 2) + pow(60 - x->ot, 2) + pow(90 - x->ob, 2)) - (pow(90 - y->og, 2) + pow(60 - y->ot, 2) + pow(90 - y->ob, 2));
  35.     }
  36. }
  37.  
  38.  
  39. int main()
  40. {
  41.     int i = 0;
  42.     int n = 0;
  43.     scanf("%d", &n);
  44.     dev* a = (dev*)malloc(n * sizeof(dev));
  45.  
  46.     for (i = 0; i < n; i++)
  47.     {
  48.         scanf("%d %d %d" , &(a + i)->og, &(a + i)->ot, &(a + i)->ob);
  49.     }
  50.  
  51.     qsort(a, n, sizeof(dev), compare);
  52.  
  53.     for(i = 0; i < n; i++)
  54.     {
  55.         printf("%d %d %d \n", (a + i)->og, (a + i)->ot, (a + i)->ob);
  56.     }
  57.     free(a);
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement