Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- typedef struct _dev
- {
- int og;
- int ot;
- int ob;
- } dev;
- int compare (const void* a, const void* b)
- {
- const dev *y = b;
- const dev *x = a;
- 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)))
- {
- if ((x->og == y->og) && (x->ot == y->ot))
- {
- return y->ob - x->ob ;
- }
- if ((x->og == y->og) && (x->ot != y->ot))
- {
- return x->ot - y->ot;
- }
- else
- {
- return y->og - x->og;
- }
- }
- else
- {
- 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));
- }
- }
- int main()
- {
- int i = 0;
- int n = 0;
- scanf("%d", &n);
- dev* a = (dev*)malloc(n * sizeof(dev));
- for (i = 0; i < n; i++)
- {
- scanf("%d %d %d" , &(a + i)->og, &(a + i)->ot, &(a + i)->ob);
- }
- qsort(a, n, sizeof(dev), compare);
- for(i = 0; i < n; i++)
- {
- printf("%d %d %d \n", (a + i)->og, (a + i)->ot, (a + i)->ob);
- }
- free(a);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement