SRM481 BatchSystem

#include <map>
#include <string>
#include <vector>
using namespace std;

class BachSystem {
    public:
        vector <int> schedule(vector<int> duration, vector <string> user){
            int N = duration.size();

            map<string, long long> jobTime;
            for(int n=0; n<N; n++) jobTime[user[n]] += duration[n];

            vector<bool> done(N);
            vector<int> ans;
            while(ans.size() < N) {
                string next;
                for(int n=0; n<N; n++){
                    if(!done[n] && (next.empty() || jobTime[user[n]] < jobTime[next]))
                        next = user[n];
                }

                for(int n=0; n<N; n++){
                    if(user[n] == next){
                        done[n] = true;
                        ans.push_back(n);
                    }
                }
            }
            return ans;
        }
}

empty()は空かどうか。
done[N]はNが1以降にならないとtrueにならない。