一問も解けなかった。というか250点に時間をかけすぎたうえに途中であきらめたのがよくなかった。
席が埋まっているかどうかを、何番目のグループがどの席に座っているかという情報をmapで持たせようとしてたのが間違い。単にどの席がいつまで埋まっているかという時間の情報をベクタに突っ込んでおいて新規客の到着時刻と照らし合わせればよいだけだった。
class RestaurantManager {
public:
int allocateTables(vector <int> tables, vector <int> groupSizes, vector <int> arrivals, vector <int> departures) {
vector <int> occupied;
int away = 0,j;
sort(tables.begin(),tables.end());
for(int i=0;i<tables.size();++i) occupied.push_back(0);
for(int i = 0;i<groupSizes.size();++i){
for(j = 0;j<tables.size();++j){
if(groupSizes[i] <= tables[j] && occupied[j] <= arrivals[i]){
occupied[j] = departures[i];
break;
}
}
if(j == tables.size()) away += groupSizes[i];
}
return away;
}
};
あとで