502 IPO listing

See: https://leetcode.com/problems/ipo/description/

C++:

class Solution {
public:
    int findMaximizedCapital(int k, int W, vector<int>& Profits, vector<int>& Capital)
    {
        vector<pair<int, int>> v;
        for (int i = 0; i < Capital.size(); ++i)
        {
            v.push_back({Capital[i], Profits[i]});
        }
        sort(v.begin(), v.end());
        for (int i = 0; i < k; ++i)
        {
            int left = 0, right = v.size(), mx = 0, idx = 0;
            while (left < right)
            {
                int mid = left + (right - left) / 2;
                if (v[mid].first <= W)
                {
                    left = mid + 1;
                }
                else
                {
                    right = mid;
                }
            }
            for (int j = right - 1; j >= 0; --j)
            {
                if (mx < v[j].second)
                {
                    mx = v[j].second;
                    idx = j;
                }
            }
            W += mx;
            v.erase(v.begin() + idx);
        }
        return W;
    }
};

 Reference: http://www.cnblogs.com/grandyang/p/6788811.html

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324654594&siteId=291194637