My code is giving wrong output

its showing 7 instead of 5

#include
#include
using namespace std;
int main()
{
int arr[100];
int m;
cin >> m;

for(int i=0;i<m;i++)
{
cin >> arr[i];
}

int left_max[1000];
int right_max[1000];

left_max[0]=0;
right_max[m-1]=0;
int maxx=INT_MIN;

for(int i=0;i<m-1;i++) {
    int temp=i;
    int maxx=INT_MIN;
    while(temp<m-1) {
        maxx=max(maxx,arr[temp]);
        temp++;
    }
    right_max[i]=maxx;
}

cout << "\n";

maxx=INT_MIN;
for(int i=m-1;i>=0;i--) {
        int temp=i;
        while(temp>=0) {
            maxx=max(maxx,arr[temp]);
            temp--;
        }
        left_max[i]=maxx;
    }

for(int i=0;i<m;i++) {
    cout << right_max[i] << " ";
}

cout << "\n";

for(int i=0;i<m;i++) {
    cout << left_max[i] << " ";
}

int sum=0;
for(int i=1;i<m-1;i++) {
    int minn=min(left_max[i],right_max[i]);
    cout << "minn=" << minn << endl;
    if(minn!=0) {
        sum+=minn-arr[i];
    }
}

cout << "\n";

cout << sum << endl;

return 0;
}

Pls wait…I m reviewing your code…let u know after sometime

You need to modify your approach a little bit as,

long long int sum=0;
long long int left[1000000];
for(int i=0; i<n;i++)
{
left[i]=max(a[i],left[i-1]);
}
long long int right[1000000];
right[n-1]=a[n-1];
for(int i=n-2;i>=0;i–)
{
right[i]=max(a[i],right[i+1]);
}
long long int water[1000000];
for(int i=0; i<n; i++)
{
water[i]= min(left[i],right[i])-a[i];
}
for(int i=0; i<n; i++)
{
sum= sum+ water[i];
}
cout<<sum;
}