#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int main() { int N; cin >> N; int D[N]; for (int i = 0; i < N; ++i) { cin >> D[i]; } int dp[1 << N][N + 1]; memset(dp, 0, sizeof(dp)); dp[0][0] = 100; for (int mask = 0; mask < (1 << N); ++mask) { for (int level = 0; level < N; ++level) { if (dp[mask][level] == 0) continue; for (int i = 0; i < N; ++i) { int d = D[i]; if (mask >> i & 1) continue; int nmask = mask | (1 << i); int nlevel = (d < 0) ? level + 1 : level; int nh = dp[mask][level] + d; nh = min(nh, 100 * (level + 1)); dp[nmask][nlevel] = max(dp[nmask][nlevel], nh); } } } int ans = 0; for (int level = 0; level <= N; ++level) { ans = max(ans, dp[(1 << N) - 1][level]); } cout << ans << endl; return 0; }