Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<vector>#include<string>#include<unordered_map>#include<cstring>#include<queue>#include<algorithm>using namespace std;int main() {int n;long long x,y;cin>>n;unordered_map<long long, long long> map[4];for(int i=0;i<n;++i){cin>>x>>y;if(map[0].find(x)==map[0].end()) map[0][x]=0;++map[0][x];if(map[1].find(y)==map[1].end()) map[1][y]=0;++map[1][y];if(map[2].find(y-x)==map[2].end()) map[2][y-x]=0;++map[2][y-x];if(map[3].find(x+y)==map[3].end()) map[3][x+y]=0;++map[3][x+y];}long long ans=0;for(int i=0;i<4;++i) {for(unordered_map<long long, long long>::iterator it=map[i].begin();it!=map[i].end();++it) {long long v=it->second;ans+=v*(v-1)/2;}