Language: C++

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <cstdio>
#include <cmath>
#include <limits.h>
using namespace std;
typedef long long LL;
typedef bitset<305> BS;
const int B=305;
const int N=400;
const BS one=BS().set(0);
const BS zero=BS();
const LL M=998244353;

struct LB {
	int sz;
	BS b[B];

	void build(BS *a,int n) {
		sz=0;
		for(int i=0;i<B;i++) {
			b[i].reset();
		}
		for(int i=0;i<n;i++) {
			BS x=a[i];
			for(int j=B-1;j>=0;j--) {
				if(((x>>j)&one)==one) {
					if(b[j]!=zero) x^=b[j];
					else {
						b[j]=x;
						sz++;
						for(int k=j-1;k>=0;k--) {
							if(b[k]!=zero && ((b[j]>>k)&one)==one) b[j]^=b[k];
						}
						for(int k=j+1;k<B;k++) {
							if(((b[k]>>j)&one)==one) b[k]^=b[j];
						}
						break;
					}
				}
			}
		}
	}
}lb;

int n,m,b;
BS a[N];
LL dp[N],P[N],inv_P[N],pw[N];

LL exgcd(LL a,LL b,LL &x,LL &y) {
	LL d=a;
	if(b!=0) {
		d=exgcd(b,a%b,y,x);
		y-=(a/b)*x;
	}
	else {
		x=1;y=0;
	}
	return d;
}

LL mod_inv(LL a,LL m) {
	LL x,y;
	exgcd(a,m,x,y);
	return (m+x%m)%m;
}

void init() {
	P[0]=1;
	inv_P[0]=1;
	pw[0]=1;
	for(int i=1;i<N;i++) {
		P[i]=P[i-1]*i%M;
		inv_P[i]=mod_inv(P[i],M);
		pw[i]=pw[i-1]*2%M;
	}
}

LL C(int n,int m) {
	return P[n]*inv_P[m]%M*inv_P[n-m]%M;
}

int main() {
	init();
	scanf("%d %d",&n,&m);
	for(int i=0;i<n;i++) {
		a[i].reset();
		for(int j=0;j<m;j++) {
			scanf("%d",&b);
			if(b) a[i].set(j);
		}
	}
	lb.build(a,n);

	dp[0]=1;
	for(int i=0;i<B;i++) {
		int l=lb.b[i].count();
		if(l==0) continue;
		for(int j=m;j>=0;j--) {
			if(j+l<=m) dp[j+l]+=dp[j],dp[j+l]%=M;
		}
	}
	LL ans=0;
	for(int i=1;i<=m;i++) {
		for(int j=1;j<=i;j+=2) {
			ans+=C(i,j)*dp[i]%M*pw[m-i]%M;
			ans%=M;
		}
	}
	ans*=pw[n-lb.sz],ans%=M;
	printf("%lld\n",ans);
}

Compiler output:
a.cc:14:9: error: 'bitset' does not name a type
   14 | typedef bitset<305> BS;
      |         ^~~~~~
a.cc:17:7: error: 'BS' does not name a type
   17 | const BS one=BS().set(0);
      |       ^~
a.cc:18:7: error: 'BS' does not name a type
   18 | const BS zero=BS();
      |       ^~
a.cc:23:9: error: 'BS' does not name a type
   23 |         BS b[B];
      |         ^~
a.cc:25:20: error: 'BS' has not been declared
   25 |         void build(BS *a,int n) {
      |                    ^~
a.cc: In member function 'void LB::build(int*, int)':
a.cc:28:25: error: 'b' was not declared in this scope
   28 |                         b[i].reset();
      |                         ^
a.cc:31:25: error: 'BS' was not declared in this scope; did you mean 'B'?
   31 |                         BS x=a[i];
      |                         ^~
      |                         B
a.cc:33:38: error: 'x' was not declared in this scope
   33 |                                 if(((x>>j)&one)==one) {
      |                                      ^
a.cc:33:44: error: 'one' was not declared in this scope
   33 |                                 if(((x>>j)&one)==one) {
      |                                            ^~~
a.cc:34:44: error: 'b' was not declared in this scope
   34 |                                         if(b[j]!=zero) x^=b[j];
      |                                            ^
a.cc:34:50: error: 'zero' was not declared in this scope; did you mean 'bzero'?
   34 |                                         if(b[j]!=zero) x^=b[j];
      |                                                  ^~~~
      |                                                  bzero
a.cc: At global scope:
a.cc:53:1: error: 'BS' does not name a type
   53 | BS a[N];
      | ^~
a.cc: In function 'int main()':
a.cc:93:17: error: 'a' was not declared in this scope
   93 |                 a[i].reset();
      |                 ^
a.cc:99:18: error: 'a' was not declared in this scope
   99 |         lb.build(a,n);
      |                  ^
a.cc:103:26: error: 'struct LB' has no member named 'b'
  103 |                 int l=lb.b[i].count();
      |                          ^