Try T.M Engineer Blog

多摩市で生息するエンジニアが「アウトプットする事は大事だ」と思って始めたブログ

AtCoder Beginner Contest 321 B - Cutoff

## 問題

atcoder.jp

考察

最近、B問題を落とすようになってきた。

こういった問題は、解答に対して全文検索するパターンなのだが、その発想が思い浮かばない。。。

まだまだ、修行が足りないと感じる。

解答

package main

import (
    "bufio"
    "fmt"
    "os"
    "sort"
)

func main() {
    in := bufio.NewReader(os.Stdin)
    out := bufio.NewWriter(os.Stdout)
    defer out.Flush()

    var n, x int
    fmt.Fscan(in, &n)
    fmt.Fscan(in, &x)

    a := make([]int, n)
    b := make([]int, n)
    for i := 0; i < n-1; i++ {
        fmt.Fscan(in, &a[i])
    }

    ans := -1
    for i := 0; i <= 100; i++ {
        // ソートはコピーした配列に対して行うこと
        copy(b, a)
        b[n-1] = i
        sort.Ints(b)

        sum := 0
        for j := 1; j < n-1; j++ {
            sum += b[j]
        }

        if x <= sum {
            ans = i
            break
        }
    }

    fmt.Fprintln(out, ans)
}