提交时间:2022-10-04 11:31:20
运行 ID: 57506
#include <bits/stdc++.h> using namespace std; int n,cnt; double c[10001]; struct e { int x1,x2; double ans; } a[10001]; void C(int x) { double di=1; for(int i=1; i<=n; i++) di/=4; for(int i=1; i<=n; i++) a[x].ans+=i*c[i]*di; printf("%.6f\n",a[x].ans); } void d(int ch,int x,int A) { if(x>n) { c[cnt+1]++; return; } if(x==ch) { d(ch,x+1,A); return; } int B[4]= {a[x].x1+a[x].x2,a[x].x1,a[x].x2,0}; for(int i=0; i<4; i++) { if(B[i]>A) cnt++; d(ch,x+1,A); if(B[i]>A) cnt--; } } int main() { scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d%d",&a[i].x1,&a[i].x2); if(a[i].x1<a[i].x2) swap(a[i].x1,a[i].x2); } for(int i=1; i<=n; i++) { memset(c,0,sizeof(c)); int A[4]= {a[i].x1+a[i].x2,a[i].x1,a[i].x2,0}; for(int j=0; j<4; j++) d(i,1,A[j]); C(i); } return 0; }