解题思路
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,a[100010][5],s[400010];
double e[400010];
bool cmp(int a,int b){
return a>b;
}
int main() {
scanf("%d",&n);
for(int i=1; i<=n; i++) {
scanf("%d%d",&x,&y);
s[++m]=x+y;
a[i][1]=s[m];
s[++m]=0;
a[i][2]=s[m];
s[++m]=x;
a[i][3]=s[m];
s[++m]=y;
a[i][4]=s[m];
}
sort(s+1,s+m+1,cmp);
for(int i=1; i<=n; i++) {
for(int j=1; j<=4; j++) {
int t=lower_bound(s+1,s+m+1,a[i][j],greater<int>())-s-1;
for(int k=1; k<=4; k++)
if(a[i][k]>a[i][j])
t--;
e[i]+=t;
}
}
for(int i=1; i<=n; i++) {
printf("%f\n",e[i]*1.0/16*1.0+1);
}
}