結果
問題 | No.155 生放送とBGM |
ユーザー | kimiyuki |
提出日時 | 2016-02-19 18:40:08 |
言語 | C++11 (gcc 11.4.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,487 bytes |
コンパイル時間 | 528 ms |
コンパイル使用メモリ | 74,052 KB |
最終ジャッジ日時 | 2024-11-14 19:34:39 |
合計ジャッジ時間 | 1,102 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:28:9: error: ‘accumulate’ was not declared in this scope 28 | if (accumulate(s.begin(), s.end(), 0) <= l) { | ^~~~~~~~~~
ソースコード
#include <iostream> #include <vector> #include <algorithm> #include <array> #include <set> #include <map> #include <queue> #include <tuple> #include <unordered_set> #include <unordered_map> #include <functional> #include <cstdio> #include <cassert> #define repeat(i,n) for (int i = 0; (i) < (n); ++(i)) #define repeat_from(i,m,n) for (int i = (m); (i) < (n); ++(i)) #define repeat_reverse(i,n) for (int i = (n)-1; (i) >= 0; --(i)) #define repeat_from_reverse(i,m,n) for (int i = (n)-1; (i) >= (m); --(i)) typedef long long ll; using namespace std; int main() { int n, l; cin >> n >> l; l *= 60; vector<int> s(n); repeat (i,n) { int mn, sc; char dummy; cin >> mn >> dummy >> sc; s[i] = mn * 60 + sc; } if (accumulate(s.begin(), s.end(), 0) <= l) { cout << n << endl; return 0; } vector<double> fact(n+1); fact[0] = 1; repeat (i,n) fact[i+1] = (i+1) * fact[i]; double p = 0; repeat (h,n) { vector<vector<ll> > dp(n, vector<ll>(l)); dp[0][0] = 1; repeat (i,n) if (i != h) { repeat_reverse (j,n-1) { repeat_reverse (k,max(0,l-s[i])) { dp[j+1][k+s[i]] += dp[j][k]; } } } repeat (j,n) { repeat_from (k,max(0,l-s[h]),l) { p += (j+1) * fact[j] * dp[j][k] * fact[n-j-1]; } } } double q = fact[n]; printf("%.12lf\n", p /(double) q); return 0; }