| 1234 |
- #include <iostream>
- #include <vector>
- using namespace std;constexpr long long MOD=998244353;
- int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n,m;cin>>n>>m;vector<vector<long long>>a(n,vector<long long>(m));vector<long long>row(n);for(int i=0;i<n;++i)for(int j=0;j<m;++j){cin>>a[i][j];row[i]=(row[i]+a[i][j])%MOD;}long long total=1;for(int i=0;i<n;++i)total=total*(row[i]+1)%MOD;total=(total-1+MOD)%MOD;long long bad=0;int off=n;for(int col=0;col<m;++col){vector<long long>dp(2*n+1),next(2*n+1);dp[off]=1;for(int i=0;i<n;++i){fill(next.begin(),next.end(),0);for(int d=-i;d<=i;++d){long long cur=dp[off+d];next[off+d]=(next[off+d]+cur)%MOD;next[off+d+1]=(next[off+d+1]+cur*a[i][col])%MOD;next[off+d-1]=(next[off+d-1]+cur*((row[i]-a[i][col]+MOD)%MOD))%MOD;}dp.swap(next);}for(int d=1;d<=n;++d)bad=(bad+dp[off+d])%MOD;}cout<<(total-bad+MOD)%MOD<<'\n';}
|