↓提出コード
Submission #8496532 - AtCoder Grand Contest 011
解法
到達時刻でソートして、到達時刻が早い人からどんどんバスに乗せていく。
このとき、以下の条件を満たす必要がある。
・ バスに乗れる人数は C 人まで。
・人は、k分より多くバスを待つことが出来ない。
↓ WAコード
rep(i,n){ rider ++; if(i==0||newbus){ active_start = time[i]; newbus = false; } active = time[i] - active_start ; if(rider == c ){//k分を超えてしまったらダメ 1戻す必要がある bus ++ ; newbus = true; rider = 0; }else if( active > k){ bus ++ ; //今いるところからもう一度やらないといけない active_start = time[i]; rider = 1; } } || これのACコードと違うところは、 if(rider == c) else if(active > k)が逆になっているところ。 このコードだと、 例えc人目の人を乗せたとき、最初バスに乗った人(待ち時間が一番長い人)の待ち時間がkを超えてしまっても、乗客がc人になった段階でbusが一台追加されてしまう。