Pagini recente » Cod sursa (job #3159756) | Cod sursa (job #2219338) | Cod sursa (job #2963283) | Cod sursa (job #2419821) | Cod sursa (job #264709)
Cod sursa(job #264709)
#include<stdio.h>
#define btgr 63
#define N 4096
int n,m;
long BIT[N+1][btgr+1],triplete;
int bit_count(int a,int b){
int i,nr,cat=0;
int gr = n/btgr + 1;
for(i=1;i<=gr;i++){
nr = BIT[a][i] & BIT[b][i];
for(;nr;nr>>=1,cat+=nr&1?1:0);
}
return cat;
}
int main(){
freopen("triplete.in","rt",stdin);
freopen("triplete.out","wt",stdout);
int x,y,i,k,j,gr,how,ordine;
scanf("%d%d",&n,&m);
for(;m--;){
scanf("%d%d",&x,&y);
BIT[x][0]++;
gr = y/btgr + 1;
ordine =y%btgr;
how = 1<<(btgr - ordine);
BIT[x][gr] ^= how;
}
gr = n/btgr + 1;
for(i=1;i<=n;i++){
if(BIT[i][0]){
for(j=1;j<=gr;j++){
for(k=btgr-1;k>=1;k--){
if(BIT[i][j] & 1<<k){
if(j==1) how = btgr - k;
else how = (j-1)*btgr + btgr - k;
triplete+=bit_count(i,how);
}
}if(j>1) if(BIT[i][j] & 1<<btgr) triplete+=bit_count(i,(j-1)*btgr);
}
}
}
printf("%ld",triplete);
return 0;
}