fork download
  1. #include <stdio.h>
  2.  
  3. #define SPACING_BITS ((1<<4)|(1<<9)|(1<<14)|(1<<19))
  4. int createVector(int v0, int v1, int v2, int v3)
  5. {
  6. return v0 | (v1 << 5) | (v2 << 10) | (v3 << 15);
  7. }
  8.  
  9. int vectorDominates(int vectorA, int vectorB)
  10. {
  11. // returns 1 if vectorA dominates vectorB:
  12. return (((vectorA | SPACING_BITS) - vectorB) & SPACING_BITS) == SPACING_BITS;
  13. }
  14.  
  15. int compare(int vectorA, int vectorB)
  16. {
  17. if(vectorDominates(vectorA, vectorB))
  18. return 1;
  19. else if(vectorDominates(vectorB, vectorA))
  20. return -1;
  21. return 0;
  22. }
  23.  
  24. int main(void) {
  25. int v1 = createVector(10, 4, 12, 5);
  26. int v2 = createVector(9, 3, 10, 5);
  27. int v3 = createVector(3, 9, 10, 5);
  28.  
  29. printf("v1 dominates v2 %s\n", vectorDominates(v1, v2) ? "yes" : "no");
  30. printf("v2 dominates v1 %s\n", vectorDominates(v2, v1) ? "yes" : "no");
  31. printf("v2 dominates v3 %s\n", vectorDominates(v2, v3) ? "yes" : "no");
  32. printf("v3 dominates v2 %s\n", vectorDominates(v3, v2) ? "yes" : "no");
  33.  
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0s 2008KB
stdin
Standard input is empty
stdout
v1 dominates v2 yes
v2 dominates v1 no
v2 dominates v3 no
v3 dominates v2 no