Press ESC to close

Krishna Jha
1 Min Read

#include<bits/stdc++.h>using namespace std;void BulidTree(int * arr,int start,int end,int i,int * tree){ if(start==end) { tree[i]=arr[start]; return; } int mid=start+(end-start)/2; BulidTree(arr,start,mid,2*i,tree); BulidTree(arr,mid+1,end,(2*i)+1,tree); tree[i]=min(tree[2*i],tree[(2*i)+1]); }int query(int * tree,int start,int end,int i,int left,int right){ //completely outside given range if(start>right||end<left) return INT_MAX; //completely inside given range if(start>=left&& end<=right) return tree[i];…

Krishna Jha
1 Min Read

int dp[501][501]; bool isPalindrome(string str,int i,int j) { while(i<=j) { if(str[i]!=str[j]) return false; i++; j–; } return 1; } int solve(string str,int i,int j) { if(i>=j) return 0; if(dp[i][j]!=-1) return dp[i][j]; if(isPalindrome(str,i,j)) return 0; int mn=INT_MAX; for(int k=i;k<j;k++) { int left,right; if(dp[i][k]!=-1) left=dp[i][k]; else left=solve(str,i,k);…