using namespace std; #include const int MOD = 998244353; typedef long long ll; typedef vector vi; typedef vector vll; typedef vector vc; typedef vector vb; typedef vector vvi; typedef vector vvll; typedef vector vs; typedef vector vvb; typedef vector vvs; typedef vector vvc; typedef pair pll; typedef set sll; #define REP(i, n) for (int i = 0; i < (n); i++) #define FOR(i, N, n) for (int i = N; i < (n); i++) #define SZ(x) (int)(x).size() // size_t #define ALL(s) (s).begin(), (s).end() #define so(V) sort(ALL(V)) #define rev(V) reverse(ALL(V)) using Graph = vector>; const ll INF = 1LL << 60; vll dx = {-1, 0, 1, 0}; vll dy = {0, -1, 0, 1}; bool IsPrime(int num) { if (num < 2) return false; else if (num == 2) return true; else if (num % 2 == 0) return false; // 偶数はあらかじめ除く double sqrtNum = sqrt(num); for (int i = 3; i <= sqrtNum; i += 2) { if (num % i == 0) { // 素数ではない return false; } } // 素数である return true; } // N の約数をすべて求める関数 vector calc_divisors(long long N) { // 答えを表す集合 vector res; // 各整数 i が N の約数かどうかを調べる for (long long i = 1; i * i <= N; ++i) { // i が N の約数でない場合はスキップ if (N % i != 0) continue; // i は約数である res.push_back(i); // N ÷ i も約数である (重複に注意) if (N / i != i) res.push_back(N / i); } // 約数を小さい順に並び替えて出力 sort(res.begin(), res.end()); return res; } void print(const vector &v) { for (int i = 0; i < v.size(); ++i) { if (i) cout << v[i] << endl; } } int main() { ll a, b, c, d, e, maxkouhuku,kohu; cin >> a >> b >> c >> d >> e; maxkouhuku = a - b; REP(i, c) { a += d; b += e; kohu = a - b; if (maxkouhuku < kohu) { maxkouhuku = kohu; } } cout << maxkouhuku << endl; return 0; }