package main import . "fmt" func main() { var n,a,b int Scan(&n,&a,&b) ans:=solve(n,a,b) Println(ans) } func solve(n, a, b int) int { if n < 20 { return bruteforce(n, a, b) } return min(a*(n-1)-b*n,-a*(n-1)-b*(n%2)) } func init() { check() } func check() { for n := 10; n < 13; n++ { for a := n-2; a <= n+2; a++ { for b := n-2; b <= n+2; b++ { ans1 := solve(n,a,b) ans2 := bruteforce(n, a, b) if ans1 != ans2 { panic(Sprintf("n=%d,a=%d,b=%d,ans1=%d,ans2=%d",n,a,b,ans1,ans2)) } } } } } func bruteforce(n, a, b int) int { if n > 20 { panic("N > 20") } ans := a*(n-1) - b * n for i := 0; i < (1<>j)&1)-1 s2 := 2*((i>>(j+1))&1)-1 tmp += a * s1*s2 } for j := 0; j < n; j++ { s := 2*((i>>j)&1)-1 tmp -= b * s } ans = min(ans, tmp) } return ans }