Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.
Example:
Input: [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
Input: [3, 0, 0, 2, 0, 4]
Output: 10
Example:
Input: [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
Input: [3, 0, 0, 2, 0, 4]
Output: 10
#include<stdio.h>
calculate(int a[], int n)
{
int f = a[0];
int fi = 0;
int sum = 0;
for(int i=0; i<n; i++) {
int next = getNextGENumber(a, a[i], i, n);
if(next != -1) {
for(int j=i+1; j<next; j++) {
sum += (a[i]-a[j]);
}
i = next - 1;
}
}
return sum;
}
int getNextGENumber(int a[], int value, int start, int n)
{
for(int i=start+1; i<n; i++) {
if(value <= a[i]) {
return i;
}
}
return -1;
}
main()
{
int n;
int a[1000];
printf("Enter number of blocks: ");
scanf("%d", &n);
printf("Enter the blocks\n");
for(int i=0; i<n && i<1000; i++) {
scanf("%d", a+i);
}
printf("%d\n", calculate(a, n));
}

No comments:
Post a Comment