トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

ARC-037-A 全優

■■■問題■■■

高橋君には「未来視」という能力がある。
彼は大学でN個の科目を履修しており、
全ての科目の試験で80点以上を取ることが目標である。

たった今見た「未来視」によると、各科目iについて、
勉強せずにその科目の試験を受けるとmi点を取ることが予測される。

高橋君は1つの科目を1分間勉強するごとに、
その科目の試験で取ることが予測される点数を1点上げることができる。

「未来視」が正しいとして、高橋君が目標を達成するために必要な最短の合計勉強時間を求めよ。

■■■入力■■■

N
m1 m2 ・・・ mN

●1行目には、高橋君が履修している科目の数 N (1 <= N <= 25) が与えられる。
●2行目には、各科目 i (1 <= i <= N) について、
  勉強せずにその科目の試験を受けたときに取ることが予測される
  得点 mi (0 <= mi <= 100) がスペース区切りで与えられる。

■■■出力■■■

標準出力に、高橋君が目標を達成するために必要な最短の合計勉強時間(分単位)を出力し、
末尾で改行せよ。


C#のソース

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static string InputPattern = "InputX";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("5");
            WillReturn.Add("70 90 60 80 50");
            //60
            //科目1の勉強を10分間、科目3の勉強を20分間、科目5の勉強を30分間すればよい
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("6");
            WillReturn.Add("100 100 100 100 100 100");
            //0
            //何もしなくてよい
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        int[] MArr = InputList[1].Split(' ').Select(X => int.Parse(X)).ToArray();

        int Answer = 0;
        foreach (int EachInt in MArr) {
            if (EachInt < 80)
                Answer += 80 - EachInt;
        }
        Console.WriteLine(Answer);
    }
}


解説

80より小さい点数があれば、80との差を計上してます。