Pagini recente » Cod sursa (job #2081243) | Cod sursa (job #1639671) | Cod sursa (job #2364705) | Cod sursa (job #2436840) | Cod sursa (job #219805)
Cod sursa(job #219805)
#include <stdio.h>
#define N 4300
long long n,m,a[N][N/32];
int minim (int a, int b)
{
if (a>b)
return b;
return a;
}
void citirith()
{
int x,y,s;
scanf("%d%d",&n,&m);
for (int i=1; i<=m; i++)
{
scanf("%lld%lld",&x,&y);
s=x+y;
x=minim(x,y); y=s-x;
a[x][y>>5]|=1<<(y&31);
}
}
void rezolvarith()
{
long long sol,z,cat,check,xz0r;
long long solmax=0;
for (int i=1; i<n; i++)
for (int j=i+1; j<=n; j++)
{
if(a[i][j>>5] & (1<<(j&31))==0)
continue;
check=j/32;
xz0r=a[i][check];
if (a[i][check]>>j==0)
continue;
sol=0;
for (int k=0; k<=n/32; k++)
{
z=a[i][k]&a[j][k];
cat=0;
while (z)
{
++cat;
z&=z-1;
}
sol+=cat;
}
solmax+=(long long)sol;
}
printf("%lld\n",solmax);
}
int main()
{
freopen("triplete.in","r",stdin);
freopen("triplete.out","w",stdout);
citirith();
rezolvarith();
return 0;
}