#include #include #include #include #include using namespace std; int price(int n, int m){ if(n == 1){ return m - 1; } if(m == 1){ return n - 1; } long long int cost, min = -1; for(int i = 1; i < n; i++){ cost = price(1, m) + price(n-1, m) + 1; if(min >= 0 && min > cost){ min = cost; }else if(min == -1){ min = cost; } } for(int i = 1; i < m; i++){ cost = price(n, i) + price(n, m-i) + 1; if(min > cost){ min = cost; } } return min; } int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int n, m; cin >> n >> m; if(n == 1){ cout << m - 1 << endl; return 0; } if(m == 1){ cout << n - 1 << endl; return 0; } long long int cost, min = -1; // row wise cutting for(int i = 1; i < n; i++){ cost = price(i, m) + price(n-i, m) + 1; if(min >= 0 && min > cost){ min = cost; } else if(min == -1) min = cost; } // column wise cutting for(int i = 1; i < m; i++){ cost = price(n, i) + price(n, m-i) + 1; if(min > cost){ min = cost; } } cout << min << endl; return 0; }