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());
}
}
};
コメント
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/n4_t/20081225