← Home
For problem statement at 1000-1999/1200-1299/1200-1209/1203/problemF1.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1200-1209/1203/verifierF1.go ends with case 4 failed: expected NO got YES
input:2 6
6 -300
96 -207
exit status 1 can you fix the verifier?  ```go
package main

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

type Project struct {
	a int
	b int
}

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	scanner.Scan()
	n := atoi(scanner.Text())
	scanner.Scan()
	r := atoi(scanner.Text())

	pos := make([]Project, 0)
	neg := make([]Project, 0)

	for i := 0; i < n; i++ {
		scanner.Scan()
		a := atoi(scanner.Text())
		scanner.Scan()
		b := atoi(scanner.Text())

		if b >= 0 {
			pos = append(pos, Project{a, b})
		} else {
			neg = append(neg, Project{a, b})
		}
	}

	sort.Slice(pos, func(i, j int) bool {
		return pos[i].a < pos[j].a
	})

	sort.Slice(neg, func(i, j int) bool {
		return neg[i].a+neg[i].b > neg[j].a+neg[j].b
	})

	for _, p := range pos {
		if r < p.a {
			fmt.Println("NO")
			return
		}
		r += p.b
	}

	for _, p := range neg {
		if r < p.a {
			fmt.Println("NO")
			return
		}
		r += p.b
		if r < 0 {
			fmt.Println("NO")
			return
		}
	}

	fmt.Println("YES")
}

func atoi(s string) int {
	n := 0
	for i := 0; i < len(s); i++ {
		n = n*10 + int(s[i]-'0')
	}
	return n
}
```