➤ 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!!
