/* -*- coding: utf-8 -*- * * 2057.cc: No.2057 Ising Model - yukicoder */ #include #include using namespace std; /* constant */ const long long LINF = 1LL << 62; /* typedef */ typedef long long ll; /* global variables */ /* subroutines */ /* main */ int main() { ll n; int a, b; scanf("%lld%d%d", &n, &a, &b); ll f0 = a * (n - 1) - b * n; ll f1 = -a * (n - 1) + b * n; ll f2 = -a * (n - 1) - b * (n & 1); printf("%lld\n", min(min(f0, f1), f2)); if (false) { int nbits = 1 << n, ss[20], minss[20]; ll minf = LINF; for (int bits = 0; bits < nbits; bits++) { for (int i = 0, bi = 1; i < n; i++, bi <<= 1) ss[i] = (bits & bi) ? -1 : 1; ll f = 0; for (int i = 0; i + 1 < n; i++) f += a * ss[i] * ss[i + 1]; for (int i = 0; i < n; i++) f -= b * ss[i]; if (minf > f) minf = f, copy(ss, ss + n, minss); } printf("%lld:", minf); for (int i = 0; i < n; i++) printf(" %d", ss[i]); putchar('\n'); } return 0; }