解いた問題

2/10/2012

SRM532 Div1 Easy

300
3つ全てがアルファベットのモノは必ず使った方がよいのは明らか。
どれを端に付け加えるべきかを全部試す。
本番では、多くの人が落ちていた。自分も落とした。
class DengklekMakingChains {
public:
  int maxBeauty(vector <string> C)
  {
    vector<string> v;
    vector<string> u;   

    int mx = 0;
    for (int i = 0; i < C.size(); ++i) {
      if (count(C[i].begin(), C[i].end(), '.') == 0) {
        v.push_back(C[i]);
      } else {
        u.push_back(C[i]);
      }
      for (int j = 0; j < C[i].size(); ++j) {
        if (C[i][j] != '.') mx = max(mx, C[i][j] - '0');
      }
    }

    int sum = 0;
    for (int i = 0; i < u.size(); ++i) {
      for (int j = 0; j < u.size(); ++j) {
        int a = 0, b = 0;
        for (int k = 0; k < 3; ++k) {
          if (u[i][k] == '.') break;
          a += u[i][k] - '0';
        }
        for (int k = 2; 0 <= k; --k) {
          if (u[j][k] == '.') break;
          b += u[j][k] - '0';
        }
        if (i != j) sum = max(sum, a + b);
        else sum = max(sum, max(a, b));
      }
    }

    int c = 0;
    for (int i = 0; i < v.size(); ++i) {
      for (int j = 0; j < v[i].size(); ++j) {
        c += v[i][j] - '0';       
      }
    }

    return max(mx, c + sum);
  }
};

0 件のコメント :

コメントを投稿