Guest User

Untitled

a guest
Apr 25th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define MAKS 100000
  4.  
  5. typedef enum _tip {
  6.     HORIZONTALNA_ULAZ,
  7.     VERTIKALNA,
  8.     HORIZONTALNA_IZLAZ
  9. } Tip;
  10.  
  11. typedef struct _par {
  12.     int prvi;
  13.     int drugi;
  14. } Par;
  15.  
  16. typedef struct _dogadaj {
  17.     Par lokacija;
  18.     Tip tip;
  19.     int indeks;
  20. } Dogadaj;
  21.  
  22. int usporedi(void const *prvi, void const *drugi) {
  23.     Dogadaj *prviD = (Dogadaj *) prvi;
  24.     Dogadaj *drugiD = (Dogadaj *) drugi;
  25.     if ((prviD->lokacija).prvi == (drugiD->lokacija).drugi) {
  26.         return prviD->tip - drugiD->tip;
  27.     } else {
  28.         return (prviD->lokacija).prvi - (drugiD->lokacija).drugi;
  29.     }
  30. }
  31.  
  32. Dogadaj dogadaji[2 * MAKS];
  33.  
  34. int main(void) {
  35.  
  36.     int N, i, x1, x2, y1, y2, dogadajIndeks = 0;
  37.  
  38.     scanf("%d", &N);
  39.  
  40.     for (i = 0; i < N; i++) {
  41.         scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
  42.         if (x1 == x2) {
  43.             dogadaji[dogadajIndeks].lokacija.prvi = x1;
  44.             dogadaji[dogadajIndeks].lokacija.drugi = y1;
  45.             dogadaji[dogadajIndeks].tip = VERTIKALNA;
  46.             dogadajIndeks++;
  47.             dogadaji[dogadajIndeks].lokacija.prvi = x2;
  48.             dogadaji[dogadajIndeks].lokacija.drugi = y2;
  49.             dogadaji[dogadajIndeks].tip = VERTIKALNA;
  50.         } else {
  51.             dogadaji[dogadajIndeks].lokacija.prvi = x1;
  52.             dogadaji[dogadajIndeks].lokacija.drugi = y1;
  53.             dogadaji[dogadajIndeks].tip = HORIZONTALNA_ULAZ;
  54.             dogadajIndeks++;
  55.             dogadaji[dogadajIndeks].lokacija.prvi = x2;
  56.             dogadaji[dogadajIndeks].lokacija.drugi = y2;
  57.             dogadaji[dogadajIndeks].tip = HORIZONTALNA_IZLAZ;
  58.         }
  59.     }
  60.    
  61.     qsort(dogadaji, sizeof(Dogadaj), dogadajIndeks, usporedi);
  62.    
  63.     return 0;
  64. }
Add Comment
Please, Sign In to add comment