fork(1) download
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. const int INF = 10e9;
  7.  
  8. int dp[100001];
  9. int main() {
  10. int N;
  11. int prevNum = 0;
  12. cin >> N;
  13.  
  14. dp[0] = INF;
  15. for (int i = 1; i <= N; i++) {
  16. dp[i] = INF;
  17.  
  18. if (i == (prevNum + 1) * (prevNum + 1)) {
  19. dp[i] = 1;
  20. prevNum++;
  21. }
  22.  
  23. for (int tempPrevNum = prevNum; tempPrevNum > 0; tempPrevNum--) {
  24. dp[i] = min(dp[i], min(dp[i - 1] + 1, dp[i - tempPrevNum * tempPrevNum] + 1));
  25. }
  26. }
  27.  
  28. cout << dp[N];
  29. }
Success #stdin #stdout 0.07s 4232KB
stdin
100000
stdout
-2147483647