fork(1) download
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4. int f (int x, int x0, int x1, int y, int y0, int y1)
  5. {
  6. return (x - x0) * (y1 - y0) - (y - y0) * (x1 - x0);
  7. }
  8. int main() {
  9. double xa, ya, xb, yb, xc, yc, xd, yd;
  10. cin >> xa >> ya >> xb >> yb >> xc >> yc >> xd >> yd;
  11. int l,m;
  12. l = f(xc,xb,xa,yc,yb,ya);
  13. m = f(xd,xb,xa,yd,yb,ya);
  14. if (l * m < 0) {
  15. printf("не выпуклый");
  16. return 0;
  17. }
  18. int q,w;
  19. q = f(xa,xc,xb,ya,yc,yb);
  20. w = f(xd,xc,xb,yd,yc,yb);
  21. if (q * w < 0) {
  22. printf("не выпуклый");
  23. return 0;
  24. }
  25. int p,r;
  26. p = f(xa,xd,xc,ya,yd,yc);
  27. r = f(xb,xd,xc,yb,yd,yc);
  28. if (p * r < 0) {
  29. printf("не выпуклый");
  30. return 0;
  31. }
  32. int j,k;
  33. j = f(xb,xa,xd,yb,ya,yd);
  34. k = f(xc,xa,xd,yc,ya,yd);
  35. if (j * k < 0) {
  36. printf("не выпуклый");
  37. return 0;
  38. }
  39.  
  40. printf ("Выпуклый");
  41. return 0;
  42. }
Success #stdin #stdout 0s 3432KB
stdin
-1 3 0 0 4 2 -1 -3
stdout
не выпуклый