解いた問題

2/21/2012

SRM528 Div1 Easy

250
貪欲。
class Cut {
public:
  int getMaximum(vector <int> len, int cut)
  {
    int ret = 0;
    vector<int> v, u;

    for (int i = 0;i < len.size(); ++i) {
      if (len[i] % 10 == 0) v.push_back(len[i]);
      else u.push_back(len[i]);
    }
   
    sort(ALL(v));
    sort(ALL(u));
    reverse(ALL(u));
   
    for (int i = 0; i < v.size(); ++i) {
      while (v[i] != 10 && cut) {
        --cut;
        v[i] -= 10;
        ++ret;
      }
      if (v[i] == 10) ++ret;
    }

    for (int i = 0; i < u.size(); ++i) {
      while (10 <= u[i] && cut) {
        --cut;
        u[i] -= 10;
        ++ret;
      }
    }

    return ret;
  }
};

0 件のコメント :

コメントを投稿