結果
問題 |
No.210 探し物はどこですか?
|
ユーザー |
![]() |
提出日時 | 2015-05-16 00:03:38 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 125 ms / 2,000 ms |
コード長 | 985 bytes |
コンパイル時間 | 780 ms |
コンパイル使用メモリ | 91,788 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-06 04:35:16 |
合計ジャッジ時間 | 2,698 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 43 |
ソースコード
#include<iostream> #include<fstream> #include<sstream> #include<string> #include<cstdio> #include<cstdlib> #include<cstring> #include<ctime> #include<stack> #include<queue> #include<set> #include<map> #include<vector> #include<list> #include<algorithm> #include<utility> #include<complex> #include<functional> using namespace std; const double eps = 1e-6; int main(void){ int n; double p[1000], q[1000]; double Q[1000]; cin >> n; for (int i = 0; i < n; i++){ cin >> p[i]; p[i] /= 1000; } for (int i = 0; i < n; i++){ cin >> q[i]; Q[i] = 1; q[i] /= 100; } priority_queue<pair<double, int>> que; for (int i = 0; i < n; i++){ que.push(make_pair(p[i] * q[i], i)); } double E = 0; int cnt = 0; while (1){ cnt ++; int index = que.top().second; double px = que.top().first; que.pop(); E += cnt*px; Q[index] *= (1 - q[index]); if (cnt*px < eps)break; que.push(make_pair(Q[index] * q[index] * p[index], index)); } printf("%.4f\n", E); return(0); }