← Home
For problem statement at 1000-1999/1200-1299/1200-1209/1203/problemF2.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1200-1209/1203/verifierF2.go ends with case 11 failed: expected 8 got 3
input:3 59
52 101
6 -26
1 18
exit status 1 can you fix the verifier? package main

import (
	"fmt"
	"sort"
)

type Project struct {
	a, b int
}

func main() {
	var n, r int
	if _, err := fmt.Scan(&n, &r); err != nil {
		return
	}

	var g1, g2 []Project
	for i := 0; i < n; i++ {
		var a, b int
		fmt.Scan(&a, &b)
		if b >= 0 {
			g1 = append(g1, Project{a, b})
		} else {
			g2 = append(g2, Project{a, b})
		}
	}

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

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

	ans := 0
	for _, p := range g1 {
		if r >= p.a {
			r += p.b
			ans++
		}
	}

	dp := make([]int, 60005)
	for i := range dp {
		dp[i] = -1
	}
	if r > 60000 {
		r = 60000
	}
	dp[r] = ans

	for _, p := range g2 {
		for j := p.a; j <= 60000; j++ {
			if dp[j] != -1 && j+p.b >= 0 {
				if dp[j]+1 > dp[j+p.b] {
					dp[j+p.b] = dp[j] + 1
				}
			}
		}
	}

	maxAns := 0
	for _, v := range dp {
		if v > maxAns {
			maxAns = v
		}
	}

	fmt.Println(maxAns)
}