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
Post a Comment