Space Coconut Crab

mike_house

メモり、メモる。の hatyone さんと一緒に組んでみました.
相変わらず,問題文に無駄が多いですd(・・;good!!

#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

int sum(int x, int y, int z)
{
	return x + y*y + z*z*z;
}

int main()
{
	//
	//	ファイル
	//
	ifstream fin("a.in");
	ofstream fout("a.out");

	int e;

	while(true)
	{
		//
		//	入力
		//
		int m = 2000000;
		fin >> e;
		if(e == 0)
			break;
		if(e != 1)
		{
			//cout << e << endl;

			//
			//	処理
			//
			int x, y, z;
			x = y = z = 0;
			for(int i1 = 0; i1 < e; i1++)
			{
				x = i1;
				//cout << x << ", " << y << ", " << z << " = " << sum(x, y, z) << endl;
				if(x+y*y+z*z*z == e)
				{
					//cout << "#" << m << ", " << x+y*y+z*z*z << endl;
					if(m > x+y*y+z*z*z)
					{
						//cout << "##" << m << ", " << x+y*y+z*z*z << endl;
						m = x+y+z;
					}
				}
				if(sum(x, y, z) > e)
					break;
				for(int i2 = 0; i2 < e; i2++)
				{
					y = i2;
					//cout << "    ";
					//cout << x << ", " << y << ", " << z << " = " << sum(x, y, z)  << endl;
					if(x+y*y+z*z*z == e)
					{
						//cout << "#" << m << ", " << x+y*y+z*z*z << endl;
						if(m > x+y*y+z*z*z)
						{
							//cout << "##" << m << ", " << x+y*y+z*z*z << endl;
							m = x+y+z;
						}
					}
					if(sum(x, y, z) > e)
					{
						y = z = 0;
						break;
					}
					for(int i3 = 0; i3 < e; i3++)
					{
						z = i3;
						//cout << "        ";
						//cout << x << ", " << y << ", " << z << " = " << sum(x, y, z)  << endl;
						if(x+y*y+z*z*z == e)
						{
							//cout << "#" << m << ", " << x+y*y+z*z*z << endl;
							if(m > x+y*y+z*z*z)
							{
								//cout << "##" << m << ", " << x+y*y+z*z*z << endl;
								m = x+y+z;
							}
						}
						if(sum(x, y, z) > e)
						{
							z = 0;
							//break;
						}
					}
				}
			}
		}
		else
		{
			m = 1;
		}
		fout << m << endl;
		m = 2000000;
	}


	fin.close();
	fout.close();

	return 0;
}