問題の概要
気温を毎分1回測定した記録がある.
測定は100%信頼出来るものではなく, -273度未満, 又は,

分に

度以下の差の物が無い測定結果は, 無効とする.
有効な測定結果の平均を求めよ. 1つもない場合は, -300.0 を出力せよ.
実装の方針, 注意点
|
+
|
... |
最初の2つ, 最後の2つのデータは,  分のデータが他に比べて少ない.
処理を煩雑にしないため, 最初に2つ, 最後に2つの番兵を入れておく.
入力は整数であるが, 出力は実数である事に注意.
|
ソースコード
|
+
|
... |
bool solve(){ cout.setf(ios::fixed); cout.precision(10); int n; cin >> n; if(!n) return false; // 入力の左右に-INFな番兵を2つずつ置いておく. vector<int> in(n+4, -INF); rep(i, n) cin >> in[i+2]; int sum = 0, cnt = 0; REP(i, 2, n+2){ bool ok = false; REP(d, -2, 3) if(d && abs(in[i+d] - in[i]) <= 2) ok = true; if(in[i] < -273) ok = false; if(ok){ sum += in[i]; ++cnt; } } if(cnt) cout << (double)sum / cnt << endl; else cout << "-300.0" << endl; return true; }
|
最終更新:2013年03月27日 00:19