急了,随机区分题,垃圾题
#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
using namespace std;
#define ll long long
const ll N=2005,w1=1023,w2=w1*1024,w3=w2*1024,w4=w3*1024,w5=w4*1024,w6=w5*1024;
int n,m,a[N][N],o,pos[N];
int ans;ll b[N][N];
bool vis[N][N];
#define nc() getchar()
inline int read(){
int x=0,f=1;char ch=nc();
while(ch<48||ch>57){if(ch=='-')f=-1;ch=nc();}
while(ch>=48&&ch<=57){x=x*10+ch-48,ch=nc();}
return x*f;
}
int main(){
n=read();m=read();
for(int i=1;i<=m;i++) pos[i]=i/6;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
a[i][j]=read();
for(int j=1;j<=m;j++)
b[i][pos[j]]=(b[i][pos[j]]<<10)|a[i][j];
}
o=(m%6==1)||(m%6==3)||(m%6==5);
m/=6;
for(register int i=1;i<=n;i++)
for(register int j=i+1,c;j<=n;j++){
c=o;
for(register int p=0;p<=m;p++)
c^=((b[i][p]&w1)==(b[j][p]&w1))^((b[i][p]&w2)==(b[j][p]&w2))^((b[i][p]&w3)==(b[j][p]&w3))^((b[i][p]&w4)==(b[j][p]&w4))^((b[i][p]&w5)==(b[j][p]&w5))^((b[i][p]&w6)==(b[j][p]&w6));
ans+=c;
}
printf("%d\n",ans);
return 0;
}