You are on page 1of 1

#include <bits/stdc++.

h>
using namespace std;

int get_change(int m) {
//write your code here
vector<int> dp(m);
dp[0] = 1;
for (int i = 1; i < m; i++) {
int charge = (i+1);
if (charge % 4 == 0) {
dp[i] = charge / 4; // optimal 1
} else if ((charge - 3) % 4 == 0) {
dp[i] = (charge / 4) + 1; // optimal 2
} else {
int d1 = i > 3 ? dp[i-3]+1 : INT_MAX;
int d2 = i > 2 ? dp[i-2]+1 : INT_MAX;
int d3 = min(dp[i-1]+1, min(d1, d2));
dp[i] = d3;
}
}
// dp[1] = dp[0]+1;
// dp[2] = 1;
// dp[3] = 1;

return dp[m-1];
}

int main() {
int m;
std::cin >> m;
std::cout << get_change(m) << '\n';
}

You might also like