Pagini recente » Cod sursa (job #36876) | Cod sursa (job #1514463) | Cod sursa (job #134092) | Cod sursa (job #2132589) | Cod sursa (job #2561488)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("triplete.in");
ofstream g("triplete.out");
int n,m,poz1=1,poz2,nr;
bool mat[4100][4100];
struct relati{
int x,y;
}v[70000];
bool cmp(relati a,relati b)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
int caut(int st)
{
int dr=m,mid,rasp=0;
while(st<=dr)
{
mid=(st+dr)/2;
if(v[mid].x==v[st].x) {rasp=mid; st=mid+1;}
else dr=mid-1;
}
return rasp;
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
f>>v[i].x>>v[i].y;
mat[v[i].x][v[i].y]=1;
}
sort(v+1,v+m+1,cmp);
for(int i=1;i<=m-1;i++)
if(v[i].x==v[i+1].x&&v[i].x!=v[i-1].x)
{
poz1=i;
poz2=caut(poz1);
for(int j=poz1;j<=poz2-1;j++)
for(int z=j+1;z<=poz2;z++)
if(mat[v[j].y][v[z].y]==1) nr++;
}
g<<nr;
}