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.はじめに
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って表現かっこいいですよね!