题目: 传送门
思路: 先判断每个鲨鱼所在的两条斜线,然后在每条斜线里面 求组合数即可。
int vis1[1100],vis2[1100];
int viss[2500];
int main() {
int n;
cin>>n;
while(n--) {
int a,b;
cin>>a>>b;
int d= min(a,b)-1;
a -= d;
b -= d;
if(a==1) {
vis1[b]++;
}
else {
vis2[a]++;
}
b+=d;
a+=d;
viss[b+(a-1)]++;
}
long long ans = 0;
long long ll = 1;
for(int i = 1;i<=1000;i++) {
if(vis1[i]!=0) {
ans += (ll*(vis1[i])*(vis1[i]-1)/2);
}
if(vis2[i]!=0) {
ans += (ll*(vis2[i])*(vis2[i]-1)/2);
}
}
for(int i = 1;i<=2500;i++) {
if(viss[i]!=0) {
//cout<<i<<' '<<viss[i]<<endl;
ans += (ll*(viss[i])*(viss[i]-1)/2);
}
}
cout<<ans<<endl;
return 0;
}