#include #include #include #include #include #define REP(i,a,b) for(i=a;i 0) { if(n&1) res = res * x; x = x * x; n >>= 1; } return res; } // 解説見てから書いたコード int main(void) { int i,j,k,l; int N; int M[20]; static int table[100000]; int a,b; cin >> N; rep(i,N) cin >> M[i]; int n = pow((ull)2,(ull)N); for(i=0;i money[g] + max(0,M[f]-table[g])){ min = money[g] + max(0,M[f]-table[g]); } } money[d] = min; }while(next_permutation(c,c+N)); } cout << money[n-1] << endl; return 0; }