Language: C

package main

import (
	"bufio"
	"container/heap"
	"fmt"
	"math"
	"os"
	"strconv"
)

const (
	initialBufSize = 10000
	maxBufSize     = 1000000
	mod            = 1e9 + 7
)

var (
	sc *bufio.Scanner = func() *bufio.Scanner {
		sc := bufio.NewScanner(os.Stdin)
		buf := make([]byte, initialBufSize)
		sc.Buffer(buf, maxBufSize)
		sc.Split(bufio.ScanWords)
		return sc
	}()
)

func main() {
	N := getInt()
	M := getInt()
	A := getIntArray(M)

	total := 0
	for i := 0; i < M; i++ {
		total += A[i]
	}

	if N < total {
		fmt.Println(-1)
	} else {
		fmt.Println(N - total)
	}
}

type Graph struct {
	n     int
	edges [][]int
}

func NewGraph(n int) *Graph {
	g := &Graph{
		n:     n,
		edges: make([][]int, n),
	}
	return g
}

func (g *Graph) AddEdge(u, v int) {
	g.edges[v] = append(g.edges[v], u)
	g.edges[u] = append(g.edges[u], v)
}

func dfs(c int, edges [][]int, visited map[int]struct{}) {
	visited[c] = struct{}{}

	for _, v := range edges[c] {
		_, flag := visited[v]
		if flag {
			continue
		}
		dfs(v, edges, visited)
	}
}

func bfs(c int, graph *Graph) {
	next := make([]int, 0)
	next = append(next, c)
	visited := make(map[int]struct{})

	for ; len(next) != 0; {
		u := next[0]
		next = next[1:]
		visited[u] = struct{}{}

		for _, v := range graph.edges[u] {
			_, flag := visited[v]
			if flag {
				continue
			}

			// なにか処理

			next = append(next, v)
		}
	}
}

func getInt() int {
	sc.Scan()
	i, e := strconv.Atoi(sc.Text())
	if e != nil {
		panic(e)
	}
	return i
}

func getIntArray(n int) []int {
	array := make([]int, n)
	for i := 0; i < n; i++ {
		array[i] = getInt()
	}
	return array
}

func getString() string {
	sc.Scan()
	return sc.Text()
}

func abs(a int) int {
	return int(math.Abs(float64(a)))
}

func pow(p, q int) int {
	return int(math.Pow(float64(p), float64(q)))
}

func powMod(n, p int) int {
	if p == 0 {
		return 1
	} else if p%2 == 0 {
		t := powMod(n, p/2)
		return calcMod(t * t)
	} else {
		return calcMod(n * powMod(n, p-1))
	}
}

func min(nums ...int) int {
	if len(nums) == 0 {
		panic("funciton min() requires at least one argument.")
	}
	res := nums[0]
	for i := 0; i < len(nums); i++ {
		res = int(math.Min(float64(res), float64(nums[i])))
	}
	return res
}

func max(nums ...int) int {
	if len(nums) == 0 {
		panic("funciton max() requires at least one argument.")
	}
	res := nums[0]
	for i := 0; i < len(nums); i++ {
		res = int(math.Max(float64(res), float64(nums[i])))
	}
	return res
}

func strSearch(a []string, b string) bool {
	for i := 0; i < len(a); i++ {
		if a[i] == b {
			return true
		}
	}
	return false
}

func printIntArray(array []int) {
	strArray := fmt.Sprint(array)
	fmt.Println(strArray[1 : len(strArray)-1])
}

func calcMod(x int) int {
	return x % mod
}

func reverse(s string) string {
	runes := []rune(s)
	for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
		runes[i], runes[j] = runes[j], runes[i]
	}
	return string(runes)
}

func isPrime(n int) bool {
	if n < 2 {
		return false
	} else if n == 2 {
		return true
	} else if n % 2 == 0 {
		return false
	}

	sqrtN := int(math.Sqrt(float64(n)))
	for i := 3; i <= sqrtN; i += 2 {
		if n % i == 0 {
			return false
		}
	}

	return true
}

func contains(s []int, e int) bool {
	for _, v := range s {
		if e == v {
			return true
		}
	}
	return false
}

func makeRange(min, max int) []int {
	a := make([]int, max-min+1)
	for i := range a {
		a[i] = min + i
	}
	return a
}

func powerset2(nums []int) [][]int {
	length := int(math.Pow(2, float64(len(nums))))
	result := make([][]int, length)

	index := 0
	result[index] = []int{}
	index++

	for _, n := range nums {
		max := index
		for i := 0; i < max; i++ {
			result[index] = copyAndAppend(result[i], n)
			index++
		}
	}

	return result
}

func copyAndAppend(nums []int, n int) []int {
	dst := make([]int, len(nums)+1)
	copy(dst, nums)
	dst[len(nums)] = n
	return dst
}

func calcGcd(x, y int) int {
	if y == 0 {
		return x
	} else if x >= y {
		return calcGcd(y, x % y)
	} else {
		return calcGcd(x, y % x)
	}
}

func getDivisor(n int) []int {
	var divisor []int
	divisor = append(divisor, 1)
	if n != 1 {
		divisor = append(divisor, n)
	}

	sqrt := int(math.Sqrt(float64(n)))
	for i := 2; i <= sqrt; i++ {
		if n % i == 0 {
			divisor = append(divisor, i)
			divisor = append(divisor, n/i)
		}
	}
	return divisor
}

type intHeap []int

func (h intHeap) Len() int {
	return len(h)
}

func (h intHeap) Less(i, j int) bool {
	return h[i] > h[j]
}

func (h intHeap) Swap(i, j int) {
	h[i], h[j] = h[j], h[i]
}

func (h *intHeap) Push(x interface{}) {
	*h = append(*h, x.(int))
}

func (h *intHeap) Pop() interface{} {
	old := *h
	n := len(old)
	x := old[n-1]
	*h = old[0 : n-1]
	return x
}

func initHeap() *intHeap {
	ih := &intHeap{}
	heap.Init(ih)
	return ih
}

func (h *intHeap) pushHeap(n int) {
	heap.Push(h, n)
}

func (h *intHeap) popHeap() int {
	return heap.Pop(h).(int)
}

func factMod(n int) int {
	value := 1
	for ; n > 1; n-- {
		value = calcMod(value * n)
	}
	return value
}

func combinationMod(n, k int) int {
	factN := factMod(n)
	factK := factMod(k)
	factNK := factMod(n - k)
	factKR := powMod(factK, mod - 2)
	factNKR := powMod(factNK, mod - 2)
	return calcMod(factN * calcMod(factKR * factNKR))
}


Compiler output:
main.c:1:1: error: unknown type name 'package'
    1 | package main
      | ^~~~~~~
main.c:3:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'import'
    3 | import (
      | ^~~~~~
main.c:25:11: error: expected identifier or '(' before ')' token
   25 |         }()
      |           ^
main.c:45:1: error: unknown type name 'type'; did you mean 'typeof'?
   45 | type Graph struct {
      | ^~~~
      | typeof
main.c:45:11: error: expected ';' before 'struct'
   45 | type Graph struct {
      |           ^~~~~~~
      |           ;
main.c:46:9: error: expected specifier-qualifier-list before 'n'
   46 |         n     int
      |         ^
main.c:50:6: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'NewGraph'
   50 | func NewGraph(n int) *Graph {
      |      ^~~~~~~~
main.c:58:7: error: unknown type name 'g'
   58 | func (g *Graph) AddEdge(u, v int) {
      |       ^
main.c:63:1: error: unknown type name 'func'
   63 | func dfs(c int, edges [][]int, visited map[int]struct{}) {
      | ^~~~
main.c:63:10: error: unknown type name 'c'
   63 | func dfs(c int, edges [][]int, visited map[int]struct{}) {
      |          ^
main.c:63:17: error: unknown type name 'edges'
   63 | func dfs(c int, edges [][]int, visited map[int]struct{}) {
      |                 ^~~~~
main.c:63:32: error: unknown type name 'visited'
   63 | func dfs(c int, edges [][]int, visited map[int]struct{}) {
      |                                ^~~~~~~
main.c:75:1: error: unknown type name 'func'
   75 | func bfs(c int, graph *Graph) {
      | ^~~~
main.c:75:10: error: unknown type name 'c'
   75 | func bfs(c int, graph *Graph) {
      |          ^
main.c:75:17: error: unknown type name 'graph'
   75 | func bfs(c int, graph *Graph) {
      |                 ^~~~~
main.c:98:1: error: unknown type name 'func'
   98 | func getInt() int {
      | ^~~~
main.c: In function 'getInt':
main.c:98:19: error: expected identifier or '(' before '{' token
   98 | func getInt() int {
      |                   ^
main.c:107:1: error: unknown type name 'func'
  107 | func getIntArray(n int) []int {
      | ^~~~
main.c:107:18: error: unknown type name 'n'
  107 | func getIntArray(n int) []int {
      |                  ^
main.c:115:1: error: unknown type name 'func'
  115 | func getString() string {
      | ^~~~
main.c:115:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'string'
  115 | func getString() string {
      |                  ^~~~~~
main.c:120:1: error: unknown type name 'func'
  120 | func abs(a int) int {
      | ^~~~
main.c:120:10: error: unknown type name 'a'
  120 | func abs(a int) int {
      |          ^
main.c:124:1: error: unknown type name 'func'
  124 | func pow(p, q int) int {
      | ^~~~
main.c:124:14: error: expected ')' before 'int'
  124 | func pow(p, q int) int {
      |              ^~~~
      |              )
main.c:128:1: error: unknown type name 'func'
  128 | func powMod(n, p int) int {
      | ^~~~
main.c:128:17: error: expected ')' before 'int'
  128 | func powMod(n, p int) int {
      |                 ^~~~
      |                 )
main.c:139:1: error: unknown type name 'func'
  139 | func min(nums ...int) int {
      | ^~~~
main.c:139:14: error: expected ')' before '...' token
  139 | func min(nums ...int) int {
      |              ^~~~
      |              )
main.c:150:1: error: unknown type name 'func'
  150 | func max(nums ...int) int {
      | ^~~~
main.c:150:14: error: expected ')' before '...' token
  150 | func max(nums ...int) int {
      |              ^~~~
      |              )
main.c:161:1: error: unknown type name 'func'
  161 | func strSearch(a []string, b string) bool {
      | ^~~~
main.c:161:16: error: unknown type name 'a'
  161 | func strSearch(a []string, b string) bool {
      |                ^
main.c:161:28: error: unknown type name 'b'
  161 | func strSearch(a []string, b string) bool {
      |                            ^
main.c:170:1: error: unknown type name 'func'
  170 | func printIntArray(array []int) {
      | ^~~~
main.c:170:20: error: unknown type name 'array'
  170 | func printIntArray(array []int) {
      |                    ^~~~~
main.c:175:1: error: unknown type name 'func'
  175 | func calcMod(x int) int {
      | ^~~~
main.c:175:14: error: unknown type name 'x'
  175 | func calcMod(x int) int {
      |              ^
main.c:179:1: error: unknown type name 'func'
  179 | func reverse(s string) string {
      | ^~~~
main.c:179:14: error: unknown type name 's'
  179 | func reverse(s string) string {
      |              ^
main.c:187:1: error: unknown type name 'func'
  187 | func isPrime(n int) bool {
      | ^~~~
main.c:187:14: error: unknown type name 'n'
  187 | func isPrime(n int) bool {
      |              ^
main.c:206:1: error: unknown type name 'func'
  206 | func contains(s []int, e int) bool {
      | ^~~~
main.c:206:15: error: unknown type name 's'
  206 | func contains(s []int, e int) bool {
      |               ^
main.c:206:24: error: unknown type name 'e'
  206 | func contains(s []int, e int) bool {
      |                        ^
main.c:215:1: error: unknown type name 'func'
  215 | func makeRange(min, max int) []int {
      | ^~~~
main.c:215:24: error: expected ')' before 'int'
  215 | func makeRange(min, max int) []int {
      |                        ^~~~
      |                        )
main.c:223:1: error: unknown type name 'func'
  223 | func powerset2(nums []int) [][]int {
      | ^~~~
main.c:223:16: error: unknown type name 'nums'
  223 | func powerset2(nums []int) [][]int {
      |                ^~~~
main.c:242:1: error: unknown type name 'func'
  242 | func copyAndAppend(nums []int, n int) []int {
      | ^~~~
main.c:242:20: error: unknown type name 'nums'
  242 | func copyAndAppend(nums []int, n int) []int {
      |                    ^~~~
main.c:242:32: error: unknown type name 'n'
  242 | func copyAndAppend(nums []int, n int) []int {
      |                                ^
main.c:249:1: error: unknown type name 'func'
  249 | func calcGcd(x, y int) int {
      | ^~~~
main.c:249:18: error: expected ')' before 'int'
  249 | func calcGcd(x, y int) int {
      |                  ^~~~
      |                  )
main.c:259:1: error: unknown type name 'func'
  259 | func getDivisor(n int) []int {
      | ^~~~
main.c:259:17: error: unknown type name 'n'
  259 | func getDivisor(n int) []int {
      |                 ^
main.c:276:1: error: unknown type name 'type'; did you mean 'typeof'?
  276 | type intHeap []int
      | ^~~~
      | typeof
main.c:276:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
  276 | type intHeap []int
      |                ^~~
main.c:282:1: error: expected declaration specifiers before 'func'
  282 | func (h intHeap) Less(i, j int) bool {
      | ^~~~
main.c:286:1: error: expected declaration specifiers before 'func'
  286 | func (h intHeap) Swap(i, j int) {
      | ^~~~
main.c:290:1: error: expected declaration specifiers before 'func'
  290 | func (h *intHeap) Push(x interface{}) {
      | ^~~~
main.c:290:37: error: expected declaration specifiers before ')' token
  290 | func (h *intHeap) Push(x interface{}) {
      |                                     ^
main.c:294:1: error: expected declaration specifiers before 'func'
  294 | func (h *intHeap) Pop() interface{} {
      | ^~~~
main.c:295:14: error: expected expression before '=' token
  295 |         old := *h
      |              ^
main.c:295:17: error: 'h' undeclared (first use in this function)
  295 |         old := *h
      |                 ^
main.c:295:17: note: each undeclared identifier is reported only once for each function it appears in
main.c: At top level:
main.c:302:1: error: unknown type name 'func'
  302 | func initHeap() *intHeap {
      | ^~~~
main.c: In function 'initHeap':
main.c:302:17: error: expected declaration specifiers before '*' token
  302 | func initHeap() *intHeap {
      |                 ^
main.c:308:1: error: expected declaration specifiers before 'func'
  308 | func (h *intHeap) pushHeap(n int) {
      | ^~~~
main.c:312:1: error: expected declaration specifiers before 'func'
  312 | func (h *intHeap) popHeap() int {
      | ^~~~
main.c:316:1: error: unknown type name 'func'
  316 | func factMod(n int) int {
      | ^~~~
main.c:316:14: error: unknown type name 'n'
  316 | func factMod(n int) int {
      |              ^
main.c:324:1: error: unknown type name 'func'
  324 | func combinationMod(n, k int) int {
      | ^~~~
main.c:324:25: error: expected ')' before 'int'
  324 | func combinationMod(n, k int) int {
      |                         ^~~~
      |                         )
main.c:332: error: expected '{' at end of input