Advertisement
Guest User

>muh runtime

a guest
May 25th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. long WaterArea(int* bar, int barLength)
  5. {
  6. long water = 0;
  7.  
  8. for (int i = 0; i < barLength - 1;) {
  9. //Find a concave area between two bars
  10. int tallest = i + 1;
  11. for (int j = i + 1; j < barLength; j++) {
  12. if (bar[j] == 0) {
  13. tallest = i + 1;
  14. break;
  15. }
  16. if (bar[j] >= bar[tallest]) {
  17. tallest = j;
  18. if (bar[j] >= bar[i]) {
  19. break;
  20. }
  21. }
  22. }
  23.  
  24. //Fill the area to match the height of the shorter bar
  25. //int waterHeight = Math.Min(bar[i], bar[tallest]);
  26. int waterHeight = bar[i] < bar[tallest] ? bar[i] : bar[tallest];
  27. for (int k = i + 1; k < tallest; k++) {
  28. if (bar[k] < waterHeight) {
  29. water += waterHeight - bar[k];
  30. }
  31. }
  32.  
  33. //Skip to the next segment
  34. i = tallest;
  35. }
  36.  
  37. return water;
  38. }
  39.  
  40. int main()
  41. {
  42. int barArrayBig[] = { 3, 2, 1, 2, 1, 4, 0, 3, 2, 1, 2, 1, 4, 0, 3, 2, 1, 2, 1, 4, 0, 3, 2, 1, 2, 1, 4, 0, 3, 2, 1, 2, 1, 4, 0, 3, 2, 1, 2, 1, 4, 0, 3, 2, 1, 2, 1, 4, 0, 3, 2, 1, 2, 1, 4 };
  43. clock_t start = clock();
  44. for (int i = 0; i < 1000000; i++) {
  45. WaterArea(barArrayBig, 55);
  46. }
  47. clock_t end = clock();
  48. double time = (double)(end - start) / CLOCKS_PER_SEC;
  49. printf("%f", time);
  50.  
  51. return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement