結果
問題 | No.210 探し物はどこですか? |
ユーザー |
![]() |
提出日時 | 2022-02-09 13:13:15 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 137 ms / 2,000 ms |
コード長 | 1,174 bytes |
コンパイル時間 | 2,817 ms |
コンパイル使用メモリ | 143,600 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-24 11:56:20 |
合計ジャッジ時間 | 8,155 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 43 |
ソースコード
#include <cassert>#include <cmath>#include <algorithm>#include <iostream>#include <iomanip>#include <climits>#include <map>#include <queue>#include <set>#include <cstring>#include <vector>using namespace std;typedef long long ll;struct Node {int id;double rate;Node(int id = -1, double rate = -1) {this->id = id;this->rate = rate;}bool operator>(const Node &n) const {return rate < n.rate;}};int main() {int N;cin >> N;vector<int> P(N);vector<int> Q(N);for (int i = 0; i < N; ++i) {cin >> P[i];}for (int i = 0; i < N; ++i) {cin >> Q[i];}priority_queue <Node, vector<Node>, greater<Node>> pque;for (int i = 0; i < N; ++i) {int p = P[i];int q = Q[i];double rate = (p * 1.0 / 1000) * (q * 1.0 / 100);pque.push(Node(i, rate));}double ans = 0.0;for (int t = 1; t <= 1000000 && not pque.empty(); ++t) {Node node = pque.top();pque.pop();if (node.rate <= 0.0) continue;ans += t * node.rate;node.rate *= (1.0 - Q[node.id] * 1.0 / 100);pque.push(node);}cout << fixed << setprecision(10) << ans << endl;return 0;}