fork download
  1. #include <cstdio>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5. int a1[1001], a2[1001];
  6. int main()
  7. {
  8. int n;
  9. scanf ("%d", &n);
  10. for (int i = 1; i <= n; i++)
  11. {
  12. scanf ("%d", &a1[i]);
  13. }
  14. a1[0] = 0;
  15. a1[n + 1] = 0;
  16. for (int i = 1; i <= n; i++)
  17. {
  18. scanf ("%d", &a2[i]);
  19. }
  20. a2[0] = 0;
  21. a2[n + 1] = 0;
  22. double ans = abs(a1[1] - a2[1]) / 2 + abs (a1[n] - a2[n]) / 2;
  23. for (int i = 1; i < n; i++)
  24. {
  25. bool f1 = a1[i] < a2[i], f2 = a1[i + 1] < a2[i + 1];
  26. if (f1^f2)
  27. {
  28. int p = abs (a1[i] - a2[i]), q = abs (a1[i + 1] - a2[i + 1]);
  29. double h1 = p / (p + q);
  30. double h2 = 1 - h1;
  31. ans += 0.5 * h1 * p + 0.5 * h2 * q;
  32. }
  33. else
  34. {
  35. ans += (abs (a1[i] - a2[i]) + abs (a1[i + 1] - a2[i + 1])) / 2;
  36. }
  37. }
  38. printf ("%.4lf", ans);
  39. }
Success #stdin #stdout 0s 3472KB
stdin
5
2 2 2 2 1
1 3 3 1 0
stdout
4.0000