結果
問題 | No.107 モンスター |
ユーザー |
![]() |
提出日時 | 2014-12-21 02:30:05 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,270 bytes |
コンパイル時間 | 789 ms |
コンパイル使用メモリ | 86,440 KB |
実行使用メモリ | 7,680 KB |
最終ジャッジ日時 | 2024-06-12 02:50:49 |
合計ジャッジ時間 | 1,677 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 20 WA * 1 |
ソースコード
#include <iostream> #include <cmath> #include <cstdio> #include <algorithm> #include <string> #include <vector> #include <queue> #include <string.h> #include <map> #include <fstream> #include <functional> #include <bitset> #include <iomanip> #include <stack> #include <set> #include <climits> #define MAX_N 1000100 #define PI 3.141592653589 #define EPS 1e-20 #define BS 10 #define MOD 1000000009 #define ZERO 10001 #define YJSNPI 8101919 #define INF (1 << 28) #define ADD(a, b) a = (a + (ll)b) % MOD #define MUL(a, b) a = (a * (ll)b) % MOD #define MAX(a, b) a = max(a, b) #define MIN(a, b) a = min(a, b) using namespace std; typedef pair<int, int> pi; typedef pair<pi, pi> ppi; int N; int dp[1 << 16][17]; int A[17]; int main() { cin >> N; for(int i = 0; i < N; i++) cin >> A[i]; dp[0][1] = 100; for(int i = 0; i < 1 << N; i++) { for(int j = 1; j <= N; j++) { if(dp[i][j] == 0) continue; for(int k = 0; k < N; k++) { if(i & (1 << k)) continue; if(A[k] < 0) { if(dp[i][j] + A[k] > 0) { MAX(dp[i | (1 << k)][j + 1], dp[i][j] + A[k]); } } else { MAX(dp[i | (1 << k)][j], min(j * 100, dp[i][j] + A[k])); } } } } int res = 0; for(int i = 1; i <= N; i++) MAX(res, dp[(1 << N) - 1][i]); cout << res << endl; }