Skip to content

Latest commit

 

History

History
55 lines (43 loc) · 1.24 KB

31.md

File metadata and controls

55 lines (43 loc) · 1.24 KB
int find(unordered_map<char,int> &m,vector<string>& garbage, vector<int>& travel,char ch)
    {
        int i=0;
        int ans=0;
        while(m.find(ch)!=m.end())
        {
            string s=garbage[i];

            for(int j=0;j<s.size();j++)
                if(s[j]==ch)
                {
                    ans++;
                    m[ch]--;
                }

            if(m[ch]==0)
                break;
            else
            {
                ans+=travel[i];
                i++;
            }

        }

        return ans;
    }
    int garbageCollection(vector<string>& garbage, vector<int>& t) {
    
        unordered_map<char,int> m;

        for(int i=0;i<garbage.size();i++)
        {
            string s=garbage[i];
            for(int j=0;j<s.size();j++)
                m[s[j]]++;
        }

        int ans=0;

        if(m.find('M')!=m.end())
            ans +=find(m,garbage,t,'M');
        
        if(m.find('P')!=m.end())
            ans +=find(m,garbage,t,'P');

        if(m.find('G')!=m.end())
            ans +=find(m,garbage,t,'G');

        return ans;
    }