解いた問題

3/20/2012

SRM520 Div1 Easy

250
全部試す。
class SRMCodingPhase {
public:
  int countScore(vector <int> P, vector <int> S, int L)
  {
    int mx = 0;

    for (int a = 0; a < S[0]; ++a) {
      for (int b = 0; b < S[1]; ++b) {
        for (int c = 0; c < S[2]; ++c) {
          if (a + b + c <= L) ; else break;
          vector<int> s;
          s.push_back(S[0] - a);
          s.push_back(S[1] - b);
          s.push_back(S[2] - c);
          int ord[] = {0, 1, 2};
          do {
            int p = 0, t = 0;
            for (int i = 0; i < 3; ++i) {
              t += s[ord[i]];
              if (t <= 75) ; else break;
              int lost = (1 << (ord[i] + 1)) * s[ord[i]];
              p += max(0, P[ord[i]] - lost);
            }
            mx = max(mx, p);
          } while (next_permutation(ord, ord + 3));
        }
      }
    }

    return mx;
  }
};

0 件のコメント :

コメントを投稿