/* GNC */ #include #include #include #include using namespace std; vector coins; int main(void) { ifstream is("coins.txt"); int n; while(is >> n){ coins.clear(); set trans; int i; coins.push_back(1); for(i = 0 ; i < n ; i ++){ int m; is >> m; coins.push_back(m); } for(i = 1 ; i <= coins[n] ; i ++){ trans.insert(i); } set step; set::iterator sit; step.insert(0); for(i = 0 ; i < coins[n] ; i++){ if(trans.size() == 0) { cout << i << endl; break; } set newstep; for(sit = step.begin() ; sit != step.end() ; sit++){ for(int t = 0 ; t < coins.size() ; t++){ if(trans.count(coins[t]+*sit) > 0) newstep.insert(coins[t]+*sit); trans.erase(coins[t]+*sit); if(trans.count(*sit-coins[t]) > 0) newstep.insert(*sit-coins[t]); trans.erase(*sit-coins[t]); if(trans.count(coins[t]-*sit) > 0) newstep.insert(coins[t]-*sit); trans.erase(coins[t]-*sit); } } step = newstep; } } }