結果
問題 |
No.412 花火大会
|
ユーザー |
![]() |
提出日時 | 2020-06-02 02:30:53 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,063 bytes |
コンパイル時間 | 2,757 ms |
コンパイル使用メモリ | 168,840 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-22 20:57:57 |
合計ジャッジ時間 | 2,782 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 18 |
ソースコード
/** * @FileName a.cpp * @Author kanpurin * @Created 2020.06.02 02:30:49 **/ #include "bits/stdc++.h" using namespace std; typedef long long ll; int main() { int b,c,d;cin >> b >> c >> d; int n;cin >> n; if (n <= 2) { cout << 0 << endl; return 0; } vector<int> tmp; tmp.push_back(b); tmp.push_back(c); tmp.push_back(d); sort(tmp.begin(), tmp.end()); b = tmp[0]; c = tmp[1]; d = tmp[2]; vector<int> e(n); for (int i = 0; i < n; i++) { cin >> e[i]; } sort(e.begin(), e.end()); // dp[i][j] : i番目まででj個つかう vector<vector<ll>> dp(n + 1,vector<ll>(4,0)); dp[0][0] = 1; for (int i = 0; i < n; i++) { dp[i + 1][0] += dp[i][0] * 2; dp[i + 1][1] += dp[i][1]; dp[i + 1][2] += dp[i][2]; dp[i + 1][3] += dp[i][3]; if (b <= e[i]) dp[i + 1][1] += dp[i][0]; if (c <= e[i]) dp[i + 1][2] += dp[i][1]; if (d <= e[i]) dp[i + 1][3] += dp[i][2]; } cout << dp[n][3] << endl; return 0; }