Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- const int C = 1000000;
- const double err = 1e-15;
- void PlayGround() {
- int n;
- cin>>n;
- double p[n];
- for(int i=0; i<n; ++i) {
- cin>>p[i];
- p[i] /= C;
- }
- double ans = 0;
- double cur = 0;
- double invProd = 1;
- int pointer = 0;
- for(int i=0; i<n; ++i) {
- while(pointer<n) {
- double new_cur = cur * (1-p[pointer]) + p[pointer] * invProd;
- if(new_cur>cur) {
- cur = new_cur;
- invProd *= (1-p[pointer]);
- ++pointer;
- } else break;
- }
- ans = max(ans, cur);
- cur -= p[i] * (invProd / (1-p[i]));
- cur /= 1-p[i];
- invProd /= 1-p[i];
- }
- ans += err;
- cout<<(int)(ans*C)<<'\n';
- }
- int main() {
- freopen("cowdate.in", "r", stdin);
- freopen("cowdate.out", "w", stdout);
- PlayGround();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement