2011年12月17日土曜日

TopCoder SRM522 Div2 Practice

JOIを控えてるのでとりあえずTopCoderのPracticeをしてみた 550のコードでひどい部分があるのはなかったことにする

250
#include <string>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <iostream>
#include <sstream>
using namespace std;
class PointErasingTwo {
  public:
    int getMaximum(vector <int> y) {
      int mcount = 0;
      for (int i = 0; i < y.size()-1; i++){
        for (int j = i+1; j < y.size(); j++){
          int count = 0;
          for (int k = i; k < j; k++){
            int mi = min(y[i], y[j]);
            int ma = max(y[i], y[j]);
            if (y[k] > mi && y[k] < ma) count++;
          }
          mcount = max(count, mcount);
        }
      }
      return mcount;
    }
};


550
#include <string>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <iostream>
#include <sstream>
using namespace std;
class RowAndManyCoins {
  public:
    string getWinner(string cells) {
      int acell = 0;
      int bcell = 0;
      for (int i = 0; i < cells.size();){
        if (cells[i] == 'A'){
          acell++;
          for (; cells[i] != 'B' && i < cells.size(); i++) ;
        }else{
          bcell++;
          for (; cells[i] != 'A' && i < cells.size(); i++) ;
        }
      }
      return (bcell > acell) ? "Bob" : "Alice";
    }
};

0 件のコメント:

コメントを投稿