diff --git a/11-42.c b/11-42.c new file mode 100644 index 0000000..c9f3714 --- /dev/null +++ b/11-42.c @@ -0,0 +1,42 @@ +#include + +int trap(int* height, int heightSize) { + int ans = 0; + int max = 0; + int max_x = 0; + for (int i = 0; i < heightSize; ++i) { + if (height[i] > max) { + max = height[i]; + max_x = i; + } + } + + // left part + int curleft = 0; + for (int i = 0; i < max_x; ++i) { + if (height[i] >= curleft) { + curleft = height[i]; + } + else { + ans += curleft - height[i]; + } + } + + // right part + int curright = 0; + for (int i = heightSize - 1; i > max_x; --i) { + if (height[i] >= curright) { + curright = height[i]; + } + else { + ans += curright - height[i]; + } + } + return ans; +} + +int main() { + int height[] = {4,2,0,3,2,5}; + printf("%d\n", trap(height, sizeof(height) / sizeof(int))); + return 0; +} \ No newline at end of file