結果
問題 | No.412 花火大会 |
ユーザー | pekempey |
提出日時 | 2016-08-12 22:42:20 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 7 ms / 2,000 ms |
コード長 | 808 bytes |
コンパイル時間 | 1,586 ms |
コンパイル使用メモリ | 162,816 KB |
実行使用メモリ | 11,776 KB |
最終ジャッジ日時 | 2024-11-07 16:34:48 |
合計ジャッジ時間 | 2,265 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int c[3]; for (int i = 0; i < 3; i++) cin >> c[i]; sort(c, c + 3); int n; cin >> n; vector<long long> a(n); for (int i = 0; i < n; i++) cin >> a[i]; static long long dp[33][33][33][33]; dp[0][0][0][0] = 1; for (int i = 0; i < n; i++) { for (int j = 0; j <= 30; j++) { for (int k = 0; k <= 30; k++) { for (int l = 0; l <= 30; l++) { int nj = j + (a[i] >= c[0]); int nk = k + (a[i] >= c[1]); int nl = l + (a[i] >= c[2]); dp[i + 1][j][k][l] += dp[i][j][k][l]; dp[i + 1][nj][nk][nl] += dp[i][j][k][l]; } } } } long long ans = 0; for (int j = 3; j <= 30; j++) { for (int k = 2; k <= 30; k++) { for (int l = 1; l <= 30; l++) { ans += dp[n][j][k][l]; } } } cout << ans << endl; }