2008-12-25
SRM408 Div1 Easy: OlympicCandles
超簡単・・・なはずがSTLの操作でつまづく。
vector<int>から値が0の要素を削除するだけの簡単な仕事で。
tr(candles,it) if(!*it) candles.erase(it); →Segmentation Fault remove(all(candles),0); →消えてないっぽい。なんで?
ゴミを消さないと駄目らしい。従って
class OlympicCandles { public: int numberOfNights(vector<int> candles) { for(int nights=1;;nights++){ sort(all(candles),greater<int>()); if(candles.size() < nights) return nights-1; for(int i=0;i<nights;i++) candles[i]--; candles.erase(remove(all(candles),0),candles.end()); } } };