Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
57497 | xujindong | S1 | C++ | 运行超时 | 0 | 1000 MS | 8060 KB | 778 | 2022-10-04 11:29:57 |
#include<bits/stdc++.h> using namespace std; int n,a1[100005],a2[100005],s[100005],ans[100005]; bool vis[100005]; int cal(int p){ if(s[p]==0)return 0; else if(s[p]==1)return a2[p]; else if(s[p]==2)return a1[p]; else return a1[p]+a2[p]; } void dfs(int d){ if(d>n){ memset(vis,0,sizeof(vis)); for(int i=1;i<=n;){ int maxn=-0x3f3f3f3f; for(int j=1;j<=n;j++)if(!vis[j])maxn=max(maxn,cal(j)); int cnt=0; for(int j=1;j<=n;j++)if(cal(j)==maxn&&!vis[j])vis[j]=1,ans[j]+=i,cnt++; i+=cnt; } return; } for(int i=0;i<4;i++)s[i]=i,dfs(d+1),s[i]=0; } int main(){ cin>>n; for(int i=1;i<=n;i++)cin>>a1[i]>>a2[i]; dfs(1); for(int i=1;i<=n;i++)cout<<(double)ans[i]/(pow(4,n))<<'\n'; return 0; }