#include #define rep(i,n) for(int i = 0; i < (n); i++) using namespace std; typedef long long ll; int main(){ cin.tie(0); ios::sync_with_stdio(0); ll A,B,N; cin >> A >> B >> N; using P = tuple; priority_queue,greater

> q; q.push({0, 1, 0}); map,ll> mp; mp[{1, 0}] = 0; ll ans = -1; while(!q.empty()) { auto [dist, s, t] = q.top(); q.pop(); if(dist != mp[{s, t}]) continue; if(s >= N) { ans = dist; break; } if(!mp.count({s, s}) || mp[{s, s}] > dist + A) { mp[{s, s}] = dist + A; q.push({dist + A, s, s}); } if(!mp.count({s + t, t}) || mp[{s + t, t}] > dist + B) { mp[{s + t, t}] = dist + B; q.push({dist + B, s + t, t}); } } cout << ans << endl; }