~cpp 
#include <iostream>
using namespace std;
const int MAX_NUMBER = 1000;
unsigned int testCase = 0;
unsigned int marbles[MAX_NUMBER] = {0,};
unsigned int c1[MAX_NUMBER] = {0,};
unsigned int n1[MAX_NUMBER] = {0,};
unsigned int c2[MAX_NUMBER] = {0,};
unsigned int n2[MAX_NUMBER] = {0,};
unsigned int m1[MAX_NUMBER] = {MAX_NUMBER,};
unsigned int m2[MAX_NUMBER] = {MAX_NUMBER,};
void input();
void process();
void output();
int main()
{	
	input();
	process();
	output();
	return 0;
}
void input()
{
	while(true)
	{
		cin >> marbles[testCase];
		
		if(marbles[testCase] == 0)
			break;
		cin >> c1[testCase] >> n1[testCase];
		cin >> c2[testCase] >> n2[testCase];
		testCase++;
	}
}
void process()
{
	for(int i = 0; i < testCase; i++)
	{
		int maxX = marbles[i] / n1[i];
		int maxY = marbles[i] / n2[i];
		int cost;
		for(int x = 0; x < maxX; x++)
		{
			for(int y = 0; y < maxY; y++)
			{
				cost = c1[i] * x + c2[i] * y;
				if(marbles[i] == n1[i] * x + n2[i] * y)
				{
					if(cost < c1[i] * m1[i] + c2[i] * m2[i])
					{
						m1[i] = x;
						m2[i] = y;
					}
				}
			}
		}
	}
}
void output()
{
	for(unsigned int i = 0; i < testCase; i++)
	{
		if(m1[i] != 0 && m2[i] != 0)
			cout << m1[i] << " " << m2[i] << endl;
		else
			cout << "failed" << endl;
	}
}
---
문제를 푸는 속도에 초점을 두어서 지저분하고 냄새 많이 남. --재동