#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef pair P; #define MOD 1000000007 // 10^9 + 7 #define INF 1000000000 // 10^9 #define LLINF 1LL<<60 int M[15]; int dp[1 << 15]; // dp[i] : 最低金額 int main() { cin.tie(0); ios::sync_with_stdio(false); int N; cin >> N; for (int i = 0; i < N; i++) cin >> M[i]; for (int i = 0; i < (1 << N); i++) dp[i] = INF; dp[0] = 0; for (int i = 0; i < (1 << N); i++) { for (int nxt = 0; nxt < N; nxt++) { if (!(1 & (i >> nxt))) { // nxtが未使用なら int sum = 0; // 今まで買った商品の定価の合計金額 for (int k = 0; k < N; k++) if (1 & (i >> k)) sum += M[k]; int dis = sum % 1000; // 割引金額 dp[i + (1 << nxt)] = min(dp[i + (1 << nxt)], dp[i] + max(0, M[nxt] - dis)); } } } cout << dp[(1 << N) - 1] << endl; return 0; }