結果
問題 | No.412 花火大会 |
ユーザー |
![]() |
提出日時 | 2016-08-13 12:34:38 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 615 bytes |
コンパイル時間 | 1,564 ms |
コンパイル使用メモリ | 168,652 KB |
実行使用メモリ | 6,816 KB |
最終ジャッジ日時 | 2024-11-07 16:36:18 |
合計ジャッジ時間 | 2,406 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 18 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<b;i++) int ABC[3]; int N; int E[30]; int dp[31][4]; //----------------------------------------------------------------- int main() { rep(i, 0, 3) cin >> ABC[i]; cin >> N; rep(i, 0, N) cin >> E[i]; sort(ABC, ABC + 3); sort(E, E + N); dp[0][0] = 1; rep(i, 0, N) { int cnt = 0; rep(j, 0, 3) if (ABC[j] <= E[i]) cnt++; rep(j, 0, 4) { if (cnt == j) { dp[i + 1][j] += dp[i][j] * 2; } else if (cnt > j) { dp[i + 1][j] += dp[i][j]; dp[i + 1][j + 1] += dp[i][j]; } } } cout << dp[N][3] << endl; }