#include <bits/stdc++.h>
using namespace std;
const int maxn=10100;
double p[maxn];
int n;
bool cmp(double x, double y){
return x>y;
}
int main() {
int _;
scanf("%d",&_);
while (_--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%lf", &p[i]);
}
sort(p + 1, p + n + 1, cmp);
double ans = p[1], tmp = (1 - p[1]);
for (int i = 2; i <= n; i++) {
double now = tmp * p[i] + ans * (1 - p[i]);
if (now >= ans) {
ans = now;
tmp *= (1 - p[i]);
}
}
printf("%.11lf
", ans);
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
typedef long long ll;
const ll inf=0x3f3f3f3f3f3f3f3f;
set<ll>s;
set<ll>::iterator it;
int n;
ll suf[maxn];
struct node {
ll x, y;
bool operator<(const node &b) const {
return x < b.x;
}
}a[maxn];
int main() {
int _;
scanf("%d", &_);
while (_--) {
s.clear();
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%lld%lld", &a[i].x, &a[i].y);
}
sort(a + 1, a + n + 1);
suf[n] = a[n].y;
for (int i = n - 1; i >= 1; i--) {
suf[i] = max(suf[i + 1], a[i].y);
}
ll ans = inf;
for (int i = 1; i <= n; i++) {
ll cur = inf, r=0;
if (i < n) {
r = suf[i + 1];
cur = min(cur, abs(a[i].x - r));
}
it = s.lower_bound(a[i].x);
if (it != s.end()) {
cur = min(cur, abs(max(r, (*it)) - a[i].x));
}
if (it != s.begin()) it--;
cur = min(cur, abs(max(r, (*it)) - a[i].x));
s.insert(a[i].y);
ans = min(ans, cur);
}
printf("%lld
", ans);
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+10;
int lg[maxn],n,st[maxn][21],k,a[maxn],vis[maxn],A[maxn],B[maxn];
ll ans;
int get(int l,int r){
int k=lg[r-l+1];
return a[st[l][k]]>=a[st[r-(1<<k)+1][k]]?st[l][k]:st[r-(1<<k)+1][k];
}
void solve(int l,int r) {
if (l > r) return;
int pos = get(l, r);
if (pos - l < r - pos) {
for (int i = l; i <= pos; i++) {
int t = a[pos] - k, lr = i + t - 1;
int kk = min(r, B[i]);
lr = max(lr, pos);
if (lr > kk) continue;
ans += kk - lr + 1;
}
} else {
for (int i = pos; i <= r; i++) {
int t = a[pos] - k, rl = i - t + 1;
int kk = max(l, A[i]);
rl = min(rl, pos);
if (rl < kk) continue;
ans += rl - kk + 1;
}
}
solve(l, pos - 1);
solve(pos + 1, r);
}
int main() {
int _;
lg[0] = -1;
for (int i = 1; i < maxn; i++) lg[i] = lg[i >> 1] + 1;
scanf("%d", &_);
while (_--) {
scanf("%d%d", &n, &k);
ans = 0;
for (int i = 1; i <= n; i++) {
st[i][0] = i;
scanf("%d", &a[i]);
}
for (int i = 1; i <= 20; i++) {
for (int j = 1; j <= n + 1 - (1 << i); j++) {
st[j][i] =
a[st[j][i - 1]] > a[st[j + (1 << (i - 1))][i - 1]] ? st[j][i - 1] : st[j + (1 << (i - 1))][i - 1];
}
}
for (int i = 1; i <= n; i++)
vis[i] = 0;
A[1] = 1;
vis[a[1]] = 1;
for (int i = 2; i <= n; i++) {
if (vis[a[i]]) A[i] = max(A[i - 1], vis[a[i]] + 1);
else A[i] = A[i - 1];
vis[a[i]] = i;
}
for (int i = 1; i <= n; i++)
vis[i] = 0;
B[n] = n;
vis[a[n]] = n;
for (int i = n - 1; i >= 1; i--) {
if (vis[a[i]]) B[i] = min(B[i + 1], vis[a[i]] - 1);
else B[i] = B[i + 1];
vis[a[i]] = i;
}
solve(1, n);
printf("%lld
", ans);
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int maxn=2010;
int a[maxn][maxn],n,m,q;
bool check(int x,int y) {
int cnt1 = 0, cnt2 = 0;
if (a[x + 1][y] == 0 || a[x - 1][y] == 0) cnt1 = 1;
if (a[x][y + 1] == 0 || a[x][y - 1] == 0) cnt2 = 1;
if (cnt1 && cnt2)
return 1;
return 0;
}
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int ans=0;
void dfs(int x,int y) {
for (int i = 0; i < 4; i++) {
int xx = x + dx[i], yy = y + dy[i];
if (xx <= 0 || xx > n || yy <= 0 || yy > m)
continue;
if (a[xx][yy] == 0) continue;
if (check(xx, yy)) {
a[xx][yy] = 0;
ans++;
dfs(xx, yy);
}
}
}
int main() {
int _;
scanf("%d", &_);
while (_--) {
scanf("%d%d%d", &n, &m, &q);
for (int i = 0; i <= n + 1; i++) {
for (int j = 0; j <= m + 1; j++) {
a[i][j] = 1;
}
}
while (q--) {
ans=0;
int x,y;
scanf("%d%d", &x, &y);
if (a[x][y] == 0) {
printf("0
");
continue;
}
a[x][y] = 0;
ans++;
dfs(x, y);
printf("%d
", ans);
}
}
}