Pagini recente » Cod sursa (job #396176) | Cod sursa (job #2666658) | Cod sursa (job #1429708) | Cod sursa (job #3266259) | Cod sursa (job #2846065)
#include <fstream>
#include <vector>
#include <algorithm>
#define x first
#define y second
using namespace std;
ifstream cin("trapez.in");
ofstream cout("trapez.out");
int n;
vector< pair<long long, long long> > l, c;
vector <long long> p;
bool cmp1(pair<int, int> a, pair<int, int> b)
{
return (a.x < b.x or (a.x == b.x and a.y < b.y));
}
bool cmp2(pair<int, int> a, pair<int, int> b)
{
return (a.y < b.y or (a.y == b.y and a.x < b.x));
}
int main(int argc, const char * argv[]) {
cin>>n;
l.resize(n);
for(int i=0; i<n; i++)
{
cin>>l[i].x>>l[i].y;
c.push_back(l[i]);
}
sort(l.begin(), l.end(), cmp1);
sort(c.begin(), c.end(), cmp2);
int fr = 1, sol = 0, count=0;
for(int i=1; i<n; i++)
{
if(l[i].x == l[i-1].x)
fr++;
else
{
count += (fr-1) * fr / 2;
fr = 1;
}
}
count += (fr-1) * fr / 2;
sol += (count-1) * count / 2;
count = 0;
fr = 1;
for(int i=1; i<n; i++)
{
if(c[i].y == c[i-1].y)
fr++;
else
{
count += (fr-1) * fr / 2;
fr = 1;
}
}
count += (fr-1) * fr / 2;
sol += (count-1) * count / 2;
cout<<sol;
return 0;
}