2012-Space Coconut Grab

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=2012&lang=jp
考え方
x + y^2 + z^3 = e
x + y + z = m
の時のmの最小値を求める問題だが、z=t(定数)とすると
x + y^2 = e - t^3
の時の、x + yの最小値を求める問題となり、
x>=0ならばx^2>=xよりyを最大にするようなxを取れば良いことが分かる。
全てのzについてこれを試せば良い。
計算量はO(cbrt(e))
実装(C++)

#include <cmath>
#include <iostream>
using namespace std;
int e,r,t;
int main(){
	for(;(cin>>e),e;r=0){
		int z;int r=1<<30;
		for(z=0;z*z*z<=e;z++){
			t=sqrt(e-z*z*z);
			r=min(e-z*z*z-t*t+t+z,r);
		}
		cout<<r<<endl;
	}
	return 0;
}