浙江省のコンピュータコース、クロススコア群のレポートは、このリンクがしばしばあります。自分の仕事を紹介するグループステージ、彼らのパフォーマンスのスコアのための聴衆の中に他のグループ。最高と最低点と呼ばれる平均点の残りの部分除去し、他の全ての群のスコア:相互評価スコアのこの最後のグループは、によって算出されるGを 1、教師評価グループと呼ぶ。G 2 。このスコアグループ(G 1 + G 2)/ 2、小数点以下が四捨五入された後、最終的な結果。この質問は、ピア評価スコアのグループごとに算出した教師を支援するプログラムを記述する必要があります。
入力フォーマット:
最初の行の入力は、2つの正の整数を与えるN(> 3)及びMはそれぞれ、パケットの数うち、以上100。次いで、N行、得られたグループの各行が与えられているN番目の画分(整数の範囲内で保証整数)、そのうちの第一は、続いて与えられた教師の評価、であるN -1他のグループへのスコアの数です。有効な入力であるべきである[0、M ]間隔の整数は、有効範囲内にない場合、スコアは無視されなければなりません。件名教師は評価が正当であることを確認するために、各グループは、クラスメートから、少なくとも3正当な得点を持つことになります。
出力フォーマット:
出力された各グループの最終スコア。それぞれの行ごとに得点します。
サンプル入力:
6 50
42 49 49 35 38 41
36 51 50 28 -1 30
40 36 41 33 47 49
30 250 -25 27 45 31
48 0 0 50 50 1234
43 41 36 29 42 29
出力例:
42
33
41
31
37
39
考え
- 最高と最低のエラーが発生しやすい箇所を除いてソートした後たびに空の新しい行に計算されていません
vector
コード
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
std::vector<int> v;
int tmp;
for(int i=0;i<n;i++)
{
v.clear(); //记得每计算新的一行要清空vector
for(int j=0;j<n;j++)
{
cin >> tmp;
if(tmp>=0 && tmp<=m)
v.push_back(tmp);
}
// 读完一行了
sort(v.begin()+1,v.end()); //不包括老师
//for(int j=0;j<v.size();j++) cout << v[j] << " "; cout<<endl;
double ans = 0.0;
for(int j=2;j<v.size()-1;j++)
ans += v[j];
//cout << ans << endl;
ans /= (v.size() - 3);
ans = (v[0] + ans) / 2.0;
cout << round(ans) << endl;
}
return 0;
}
引用文
https://pintia.cn/problem-sets/994805260223102976/problems/994805262303477760