class Solution{ public: string maxSum(string w,char x[], int b[],int n){ // code here unordered_map<char,int> mp; for(int i=0;i<w.size();i++) { mp[w[i]]=int(w[i]); } for(int i=0;i<n;i++) { mp[x[i]]=b[i]; } vector<int> v(w.size()); for(int i=0;i<w.size();i++) { v[i]=mp[w[i]]; } int edx=0, mxl=0, mxg=INT_MIN; for(int i=0;i<w.size();i++) { mxl=max(v[i], v[i]+mxl); if(mxl>mxg) { mxg=mxl; edx=i; } } int sdx=edx; while(sdx>=0) { mxg-=v[sdx]; if(mxg==0) break; if(sdx==0) break; sdx--; } string ans=""; for(int i=sdx;i<=edx;i++) { ans+=w[i]; } return ans; } };