program ideone;
begin
(* your code goes here *)
end.var
N, i, j, passCount: integer;
scores, sortedScores: array[1..1000] of real;
sum, mean, maxScore, minScore: real;
varianceSum, stdDev, median, temp, deviation: real;
begin
// 1. 人数(N)の読み込み
read(N);
// 10人以上であるかのチェック
if N < 10 then
begin
writeln('エラー: 学生の点数は10人以上入力してください。');
end
else
begin
sum := 0;
passCount := 0;
// 2. 点数の読み込みと基本集計(合計、合格者数、最高点、最低点)
for i := 1 to N do
begin
read(scores[i]);
sortedScores[i] := scores[i];
sum := sum + scores[i];
// 60点以上を合格とする
if scores[i] >= 60 then
passCount := passCount + 1;
// 最高点・最低点の更新
if i = 1 then
begin
maxScore := scores[i];
minScore := scores[i];
end
else
begin
if scores[i] > maxScore then maxScore := scores[i];
if scores[i] < minScore then minScore := scores[i];
end;
end;
// 3. 平均の計算
mean := sum / N;
// 4. 標準偏差の計算
varianceSum := 0;
for i := 1 to N do
begin
varianceSum := varianceSum + sqr(scores[i] - mean);
end;
stdDev := sqrt(varianceSum / N);
// 5. 中央値(Median)の計算のために配列をソート (バブルソート)
for i := 1 to N - 1 do
begin
for j := i + 1 to N do
begin
if sortedScores[i] > sortedScores[j] then
begin
temp := sortedScores[i];
sortedScores[i] := sortedScores[j];
sortedScores[j] := temp;
end;
end;
end;
// 偶数・奇数で中央値の計算を分ける
if N mod 2 = 1 then
median := sortedScores[N div 2 + 1]
else
median := (sortedScores[N div 2] + sortedScores[N div 2 + 1]) / 2.0;
// 6. 全体結果の出力 (小数点以下2桁で表示)
writeln('平均 (Mean) : ', mean:0:2);
writeln('中央値 (Median) : ', median:0:2);
writeln('最高点 (Max) : ', maxScore:0:2);
writeln('最低点 (Min) : ', minScore:0:2);
writeln('標準偏差 (StdDev) : ', stdDev:0:2);
writeln('合格者数 (Passed) : ', passCount, ' 人');
writeln;
writeln('--- 各点数と偏差値 ---');
// 7. 各学生の偏差値を計算して出力
for i := 1 to N do
begin
// 標準偏差が0(全員同じ点数)の場合のゼロ除算対策
if stdDev > 0 then
deviation := 50.0 + 10.0 * (scores[i] - mean) / stdDev
else
deviation := 50.0;
writeln('点数: ', scores[i]:0:2, ' | 偏差値: ', deviation:0:2);
end;
end;
end.
cHJvZ3JhbSBpZGVvbmU7CmJlZ2luCgkoKiB5b3VyIGNvZGUgZ29lcyBoZXJlICopCmVuZC52YXIKICBOLCBpLCBqLCBwYXNzQ291bnQ6IGludGVnZXI7CiAgc2NvcmVzLCBzb3J0ZWRTY29yZXM6IGFycmF5WzEuLjEwMDBdIG9mIHJlYWw7CiAgc3VtLCBtZWFuLCBtYXhTY29yZSwgbWluU2NvcmU6IHJlYWw7CiAgdmFyaWFuY2VTdW0sIHN0ZERldiwgbWVkaWFuLCB0ZW1wLCBkZXZpYXRpb246IHJlYWw7CgpiZWdpbgogIC8vIDEuIOS6uuaVsChOKeOBruiqreOBv+i+vOOBvwogIHJlYWQoTik7CgogIC8vIDEw5Lq65Lul5LiK44Gn44GC44KL44GL44Gu44OB44Kn44OD44KvCiAgaWYgTiA8IDEwIHRoZW4KICBiZWdpbgogICAgd3JpdGVsbign44Ko44Op44O8OiDlrabnlJ/jga7ngrnmlbDjga8xMOS6uuS7peS4iuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAgicpOwogIGVuZAogIGVsc2UKICBiZWdpbgogICAgc3VtIDo9IDA7CiAgICBwYXNzQ291bnQgOj0gMDsKCiAgICAvLyAyLiDngrnmlbDjga7oqq3jgb/ovrzjgb/jgajln7rmnKzpm4boqIjvvIjlkIjoqIjjgIHlkIjmoLzogIXmlbDjgIHmnIDpq5jngrnjgIHmnIDkvY7ngrnvvIkKICAgIGZvciBpIDo9IDEgdG8gTiBkbwogICAgYmVnaW4KICAgICAgcmVhZChzY29yZXNbaV0pOwogICAgICBzb3J0ZWRTY29yZXNbaV0gOj0gc2NvcmVzW2ldOwogICAgICBzdW0gOj0gc3VtICsgc2NvcmVzW2ldOwoKICAgICAgLy8gNjDngrnku6XkuIrjgpLlkIjmoLzjgajjgZnjgosKICAgICAgaWYgc2NvcmVzW2ldID49IDYwIHRoZW4KICAgICAgICBwYXNzQ291bnQgOj0gcGFzc0NvdW50ICsgMTsKCiAgICAgIC8vIOacgOmrmOeCueODu+acgOS9jueCueOBruabtOaWsAogICAgICBpZiBpID0gMSB0aGVuCiAgICAgIGJlZ2luCiAgICAgICAgbWF4U2NvcmUgOj0gc2NvcmVzW2ldOwogICAgICAgIG1pblNjb3JlIDo9IHNjb3Jlc1tpXTsKICAgICAgZW5kCiAgICAgIGVsc2UKICAgICAgYmVnaW4KICAgICAgICBpZiBzY29yZXNbaV0gPiBtYXhTY29yZSB0aGVuIG1heFNjb3JlIDo9IHNjb3Jlc1tpXTsKICAgICAgICBpZiBzY29yZXNbaV0gPCBtaW5TY29yZSB0aGVuIG1pblNjb3JlIDo9IHNjb3Jlc1tpXTsKICAgICAgZW5kOwogICAgZW5kOwoKICAgIC8vIDMuIOW5s+Wdh+OBruioiOeulwogICAgbWVhbiA6PSBzdW0gLyBOOwoKICAgIC8vIDQuIOaomea6luWBj+W3ruOBruioiOeulwogICAgdmFyaWFuY2VTdW0gOj0gMDsKICAgIGZvciBpIDo9IDEgdG8gTiBkbwogICAgYmVnaW4KICAgICAgdmFyaWFuY2VTdW0gOj0gdmFyaWFuY2VTdW0gKyBzcXIoc2NvcmVzW2ldIC0gbWVhbik7CiAgICBlbmQ7CiAgICBzdGREZXYgOj0gc3FydCh2YXJpYW5jZVN1bSAvIE4pOwoKICAgIC8vIDUuIOS4reWkruWApChNZWRpYW4p44Gu6KiI566X44Gu44Gf44KB44Gr6YWN5YiX44KS44K944O844OIICjjg5Djg5bjg6vjgr3jg7zjg4gpCiAgICBmb3IgaSA6PSAxIHRvIE4gLSAxIGRvCiAgICBiZWdpbgogICAgICBmb3IgaiA6PSBpICsgMSB0byBOIGRvCiAgICAgIGJlZ2luCiAgICAgICAgaWYgc29ydGVkU2NvcmVzW2ldID4gc29ydGVkU2NvcmVzW2pdIHRoZW4KICAgICAgICBiZWdpbgogICAgICAgICAgdGVtcCA6PSBzb3J0ZWRTY29yZXNbaV07CiAgICAgICAgICBzb3J0ZWRTY29yZXNbaV0gOj0gc29ydGVkU2NvcmVzW2pdOwogICAgICAgICAgc29ydGVkU2NvcmVzW2pdIDo9IHRlbXA7CiAgICAgICAgZW5kOwogICAgICBlbmQ7CiAgICBlbmQ7CgogICAgLy8g5YG25pWw44O75aWH5pWw44Gn5Lit5aSu5YCk44Gu6KiI566X44KS5YiG44GR44KLCiAgICBpZiBOIG1vZCAyID0gMSB0aGVuCiAgICAgIG1lZGlhbiA6PSBzb3J0ZWRTY29yZXNbTiBkaXYgMiArIDFdCiAgICBlbHNlCiAgICAgIG1lZGlhbiA6PSAoc29ydGVkU2NvcmVzW04gZGl2IDJdICsgc29ydGVkU2NvcmVzW04gZGl2IDIgKyAxXSkgLyAyLjA7CgogICAgLy8gNi4g5YWo5L2T57WQ5p6c44Gu5Ye65YqbICjlsI/mlbDngrnku6XkuIsy5qGB44Gn6KGo56S6KQogICAgd3JpdGVsbign5bmz5Z2HIChNZWFuKSAgICAgICA6ICcsIG1lYW46MDoyKTsKICAgIHdyaXRlbG4oJ+S4reWkruWApCAoTWVkaWFuKSAgIDogJywgbWVkaWFuOjA6Mik7CiAgICB3cml0ZWxuKCfmnIDpq5jngrkgKE1heCkgICAgICA6ICcsIG1heFNjb3JlOjA6Mik7CiAgICB3cml0ZWxuKCfmnIDkvY7ngrkgKE1pbikgICAgICA6ICcsIG1pblNjb3JlOjA6Mik7CiAgICB3cml0ZWxuKCfmqJnmupblgY/lt64gKFN0ZERldikgOiAnLCBzdGREZXY6MDoyKTsKICAgIHdyaXRlbG4oJ+WQiOagvOiAheaVsCAoUGFzc2VkKSA6ICcsIHBhc3NDb3VudCwgJyDkuronKTsKICAgIHdyaXRlbG47CiAgICB3cml0ZWxuKCctLS0g5ZCE54K55pWw44Go5YGP5beu5YCkIC0tLScpOwoKICAgIC8vIDcuIOWQhOWtpueUn+OBruWBj+W3ruWApOOCkuioiOeul+OBl+OBpuWHuuWKmwogICAgZm9yIGkgOj0gMSB0byBOIGRvCiAgICBiZWdpbgogICAgICAvLyDmqJnmupblgY/lt67jgYww77yI5YWo5ZOh5ZCM44GY54K55pWw77yJ44Gu5aC05ZCI44Gu44K844Ot6Zmk566X5a++562WCiAgICAgIGlmIHN0ZERldiA+IDAgdGhlbgogICAgICAgIGRldmlhdGlvbiA6PSA1MC4wICsgMTAuMCAqIChzY29yZXNbaV0gLSBtZWFuKSAvIHN0ZERldgogICAgICBlbHNlCiAgICAgICAgZGV2aWF0aW9uIDo9IDUwLjA7CiAgICAgICAgCiAgICAgIHdyaXRlbG4oJ+eCueaVsDogJywgc2NvcmVzW2ldOjA6MiwgJyB8IOWBj+W3ruWApDogJywgZGV2aWF0aW9uOjA6Mik7CiAgICBlbmQ7CiAgZW5kOwplbmQu
5YWl5Yqb5L6L44CRIChpZGVvbmUuY29t44Gu44CMSW5wdXQgKHN0ZGluKeOAjeOBq+S7peS4i+OCkuiyvOOCiuS7mOOBkeOBvuOBmSkKICAxMAogIDg1IDkyIDQ1IDYwIDc4IDU1IDEwMCA4OCA3MiA2NQoKICDjgJDlh7rlipvkvovjgJEKICDlubPlnYcgKE1lYW4pICAgICAgIDogNzQuMDAKICDkuK3lpK7lgKQgKE1lZGlhbikgICA6IDc1LjAwCiAg5pyA6auY54K5IChNYXgpICAgICAgOiAxMDAuMDAKICDmnIDkvY7ngrkgKE1pbikgICAgICA6IDQ1LjAwCiAg5qiZ5rqW5YGP5beuIChTdGREZXYpIDogMTcuMDIKICDlkIjmoLzogIXmlbAgKFBhc3NlZCkgOiA4IOS6ugoKICAtLS0g5ZCE54K55pWw44Go5YGP5beu5YCkIC0tLQogIOeCueaVsDogODUuMDAgfCDlgY/lt67lgKQ6IDU2LjQ2CiAg54K55pWwOiA5Mi4wMCB8IOWBj+W3ruWApDogNjAuNTcKICDngrnmlbA6IDQ1LjAwIHwg5YGP5beu5YCkOiAzMi45NgogIOeCueaVsDogNjAuMDAgfCDlgY/lt67lgKQ6IDQxLjc3CiAg54K55pWwOiA3OC4wMCB8IOWBj+W3ruWApDogNTIuMzUKICDngrnmlbA6IDU1LjAwIHwg5YGP5beu5YCkOiAzOC44MwogIOeCueaVsDogMTAwLjAwIHwg5YGP5beu5YCkOiA2NS4yNwogIOeCueaVsDogODguMDAgfCDlgY/lt67lgKQ6IDU4LjIyCiAg54K55pWwOiA3Mi4wMCB8IOWBj+W3ruWApDogNDguODIKICDngrnmlbA6IDY1LjAwIHwg5YGP5beu5YCkOiA0NC43MQ==
入力例】 (ideone.comの「Input (stdin)」に以下を貼り付けます)
10
85 92 45 60 78 55 100 88 72 65
【出力例】
平均 (Mean) : 74.00
中央値 (Median) : 75.00
最高点 (Max) : 100.00
最低点 (Min) : 45.00
標準偏差 (StdDev) : 17.02
合格者数 (Passed) : 8 人
--- 各点数と偏差値 ---
点数: 85.00 | 偏差値: 56.46
点数: 92.00 | 偏差値: 60.57
点数: 45.00 | 偏差値: 32.96
点数: 60.00 | 偏差値: 41.77
点数: 78.00 | 偏差値: 52.35
点数: 55.00 | 偏差値: 38.83
点数: 100.00 | 偏差値: 65.27
点数: 88.00 | 偏差値: 58.22
点数: 72.00 | 偏差値: 48.82
点数: 65.00 | 偏差値: 44.71