Water Tapping

 1.Try 1


// Online C++ compiler to run C++ program online

#include <iostream>

#include <bits/stdc++.h>

using namespace std;


void freq(int* arr,int n){

    int res=1;

    int i=0;

    while(i<n){

        if (arr[i]==arr[i+1]){

            res+=1;

        }

        else {

            cout<<arr[i]<<" "<<res;

            res=1;

            cout<<endl;

        }

        i++;

    }

}



void local_min(int* arr,int n){

    for (int i=0;i<n;i++){

        if (arr[i+1]>arr[i] && arr[i-1]>arr[i]){

            cout<<arr[i]<<" ";

            

        }

    }

}


void local_max(int* arr,int n){

    for (int i=1;i<n-1;i++){

        if (arr[i+1]<arr[i] && arr[i-1]<arr[i]){

            cout<<arr[i]<<" ";

            

        }

    }

    if (arr[0]>arr[1]){

        cout<<arr[0]<<" ";

    }

    if (arr[n-1]>arr[n-2]){

        cout<<arr[n-1]<<" ";

    }

}


bool is_des(int* arr, int n){

    for(int i=0;i<n-1;i++){

        if (arr[i+1]>arr[i]){

            return false;

        }

        

    }

    return true;

}


void rev(int*arr, int n){

    int l=0;

    int h=n-1;

    while(l<h){

        swap(arr[l],arr[h]);

        l++;

        h--;

    }

    

}

int water_tap(int* arr, int n){

    int m=0;

    int res=0;

    cout<<is_des(arr,n)<<endl;

    if(is_des(arr,n)==1){

        rev(arr,n);

        res=0;

        

    }

    for (int i=0;i<n;i++){

        cout<<m<<" ";

        cout<<arr[i]<<endl;

        m=max(arr[i],m);

        if(arr[i]!=m){

            res=res+(m-arr[i]);

        }

        

    }

    return res;

}

int main() {

    int arr[10]={5,4,2,3,1};

    int n=5;

    

    cout<<water_tap(arr,n);


    return 0;

}


2. Solution:

// Online C++ compiler to run C++ program online

#include <iostream>

#include <bits/stdc++.h>

using namespace std;


int water_tap(int* arr, int n){

    int res=0;

    for(int i=0;i<n;i++){

        int lmax=arr[i];

        for(int j=0;j<i;j++){

            lmax=max(arr[j],lmax);

        }

        int rmax=arr[i];

        for(int j=i+1;j<n;j++){

            rmax=max(arr[j],rmax);

        }

        cout<<lmax<<" "<<rmax<<endl;

        if(min(lmax,rmax)-arr[i]>0){

            res=res+min(lmax,rmax)-arr[i];

        }

        

    }

    return res;

}

int main() {

    int arr[10]={3,0,3,0,3};

    int n=5;

    

    cout<<water_tap(arr,n);


    return 0;

}

Comments

Popular posts from this blog

Sum of Even Numbers till N

Find the Runner-Up Score!

Print All Substrings