Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define MAKS 100000
- typedef enum _tip {
- HORIZONTALNA_ULAZ,
- VERTIKALNA,
- HORIZONTALNA_IZLAZ
- } Tip;
- typedef struct _par {
- int prvi;
- int drugi;
- } Par;
- typedef struct _dogadaj {
- Par lokacija;
- Tip tip;
- int indeks;
- } Dogadaj;
- int usporedi(void const *prvi, void const *drugi) {
- Dogadaj *prviD = (Dogadaj *) prvi;
- Dogadaj *drugiD = (Dogadaj *) drugi;
- if ((prviD->lokacija).prvi == (drugiD->lokacija).drugi) {
- return prviD->tip - drugiD->tip;
- } else {
- return (prviD->lokacija).prvi - (drugiD->lokacija).drugi;
- }
- }
- Dogadaj dogadaji[2 * MAKS];
- int main(void) {
- int N, i, x1, x2, y1, y2, dogadajIndeks = 0;
- scanf("%d", &N);
- for (i = 0; i < N; i++) {
- scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
- if (x1 == x2) {
- dogadaji[dogadajIndeks].lokacija.prvi = x1;
- dogadaji[dogadajIndeks].lokacija.drugi = y1;
- dogadaji[dogadajIndeks].tip = VERTIKALNA;
- dogadajIndeks++;
- dogadaji[dogadajIndeks].lokacija.prvi = x2;
- dogadaji[dogadajIndeks].lokacija.drugi = y2;
- dogadaji[dogadajIndeks].tip = VERTIKALNA;
- } else {
- dogadaji[dogadajIndeks].lokacija.prvi = x1;
- dogadaji[dogadajIndeks].lokacija.drugi = y1;
- dogadaji[dogadajIndeks].tip = HORIZONTALNA_ULAZ;
- dogadajIndeks++;
- dogadaji[dogadajIndeks].lokacija.prvi = x2;
- dogadaji[dogadajIndeks].lokacija.drugi = y2;
- dogadaji[dogadajIndeks].tip = HORIZONTALNA_IZLAZ;
- }
- }
- qsort(dogadaji, sizeof(Dogadaj), dogadajIndeks, usporedi);
- return 0;
- }
Add Comment
Please, Sign In to add comment