ねむーの日記~AtCoderな日々~

福岡に住むプログラミング好きのブログです!

AtCoder Beginner Contest 151 B - Achieve the Goal

今週は晴れが多くてうれしいです、ねむーです。

今回はAtCoder(https://atcoder.jp/contests/abc151/tasks/abc151_b)にて開催されました、AtCoder Beginner Contest 151 B問題「B - Achieve the Goal」の問題と僕との戦闘記です。

0.はじめに

今回も、プログラミング言語C#を使用しています。

1.問題文

高橋君は N 科目のテストを受けます。各テストは K 点満点であり、点数はそれぞれ 0 以上の整数です。

高橋君は N − 1 科目のテストを既に受けており、 i 番目の科目のテストの点数は A i 点でした。

高橋君の目標は、 N 科目のテストの平均点を M 点以上にすることです。

高橋君が目標を達成するためには、最後のテストで最低何点取る必要があるか出力してください。

達成不可能である場合は、代わりに -1 を出力してください。

2.制約

  • 2 ≤ N ≤ 100
  • 1 ≤ K ≤ 100
  • 1 ≤ M ≤ K
  • 0 ≤ A i ≤ K
  • 入力中のすべての値は整数である。

3.入出力例

  • 入力
4 100 60
0 0 0
  • 出力
-1

4.初見の感想

  • 取るべき点数と今持ってる点数を比較して行きます
  • 取るべき点数はN×M、持ってる点数はAの配列和で計算します

5.コードと簡単な解説

using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
    static void Main(string[] args)
    {
        string[] input = Console.ReadLine().Split();
        int N = int.Parse(input[0]);
        int K = int.Parse(input[1]);
        int M = int.Parse(input[2]);
        string[] temp = Console.ReadLine().Split();
        int[] A = new int[N];
        for(int i = 0; i < N-1; i++)
        {
            A[i] = int.Parse(temp[i]);
        }
        int ans = N * M - A.Sum();
        if (ans <= 0) ans = 0;
        else if (ans > K) ans = -1;
        Console.WriteLine(ans);
    }
}

7.最後に

Achieve the Goalって表現かっこいいですよね!