➤ Problem Link : BORW
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; int arr[202]; int dp[202][202][202]; int Unpaint(int i,int w,int b) { if(i<1) return 0; int x=INT_MAX; int y=INT_MAX; int z=INT_MAX; if(arr[i]<arr[w]) { if(dp[i-1][i][b]==-1) dp[i-1][i][b]=Unpaint(i-1,i,b); x=dp[i-1][i][b]; } if(arr[i]>arr[b]) { if(dp[i-1][w][i]==-1) dp[i-1][w][i]=Unpaint(i-1,w,i); y=Unpaint(i-1,w,i); } if(dp[i-1][w][b]==-1) dp[i-1][w][b]=Unpaint(i-1,w,b); z=dp[i-1][w][b]; return dp[i][w][b]=min(x,min(y,1+z)); } int main() { while(1) { int n; cin>>n; if(n==-1) break; memset(dp,-1,sizeof(dp)); for(int i=1;i<=n;i++) cin>>arr[i]; arr[n+1]=INT_MAX; arr[0]=-1; cout<<Unpaint(n,n+1,0)<<endl; } }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!