Hatena::Grouptopcoder

naoya_t@topcoder RSSフィード

2008-12-25

SRM408 Div1 Easy: OlympicCandles

| 18:04 | SRM408 Div1 Easy: OlympicCandles - naoya_t@topcoder を含むブックマーク はてなブックマーク - SRM408 Div1 Easy: OlympicCandles - naoya_t@topcoder SRM408 Div1 Easy: OlympicCandles - naoya_t@topcoder のブックマークコメント

超簡単・・・なはずが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());
    }
  }
};