解いた問題

4/21/2011

SRM310Div2

250
3回くらい描き直した。
class MeasuringTemperature {
public:
  double averageTemperature(vector <int> v) {
    double sum = 0;
    double cnt = 0;
    bool valid[v.size()];
    for(int i=0; i<v.size(); ++i){
      valid[i] = -273 <= v[i];
    }
    for(int i=0; i<v.size(); ++i){
      bool flg = false;
      for(int j=-2; j<=2; ++j){
        if(i + j < 0)continue;
        if(v.size() <= i + j)continue;
        if(j)flg = flg || abs(v[i] - v[i+j]) <= 2;
      }
      valid[i] = valid[i] && flg;
    }
    for(int i=0; i<v.size(); ++i){
      if( !valid[i] )continue;
      ++cnt;
      sum += v[i];
    }
    return cnt == 0 ? -300 : sum / cnt;
  }
}; 
500
整数値で比較するところを、何故か文字列に変換して+='0'と+='9'して比較してた。
700 < 1000 , "700" > "1000" だろうに。
class InputBoxChecker {
public:
  bool check(lli mn, lli mx, lli num){
    lli n, m;
    n = m = num;
    while(n <= mx){
      if(mn <= m && n <= mx)return true;
      n = n * 10LL;
      m = m * 10LL + 9LL;
    }
    return false;
  }
  vector <string> checkPrefix(int s, int l, vector <int> num) {
    vector <string> r;
    for(int i=0; i<num.size(); ++i){
      r.push_back( check(s, l, num[i]) ? "VALID" : "INVALID" );
    }
    return r;
  }
}; 
1000
読んでない。

0 件のコメント :

コメントを投稿