解いた問題

5/28/2012

SRM408 Div2 Medium

500

読むだけ



class OlympicCandles {
public:
  int numberOfNights(vector <int> C)
  {
    int night = 1;

    while (true) {
      sort(C.begin(), C.end());
      reverse(C.begin(), C.end());
      int cnt = 0;
      for (int i = 0; i < (int)min((int)C.size(), night); ++i) {
        if (0 < C[i]) ++cnt;
        --C[i];
      }
      if (cnt == night) ++night;
      else break;
    }

    return night - 1;
  }
};