結果
問題 | No.1141 田グリッド |
ユーザー |
|
提出日時 | 2020-07-31 21:45:20 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 182 ms / 2,000 ms |
コード長 | 1,739 bytes |
コンパイル時間 | 1,149 ms |
コンパイル使用メモリ | 95,608 KB |
実行使用メモリ | 6,912 KB |
最終ジャッジ日時 | 2024-07-06 17:28:41 |
合計ジャッジ時間 | 5,590 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 31 |
ソースコード
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<vector>#include<map>#include<set>#include<string>#include<queue>#include<stack>#include<complex>using namespace std;#define MOD 1000000007#define MOD2 998244353#define INF (1<<29)#define LINF (1LL<<60)#define EPS (1e-10)#define PI 3.1415926535897932384626433832795028typedef long long Int;typedef pair<Int, Int> P;typedef long double Real;typedef complex<Real> CP;Int mod_pow(Int x, Int a, Int m = MOD){if(a == 0)return 1;if(a % 2 == 1)return x * mod_pow(x, a - 1, m) % m;Int res = mod_pow(x, a / 2, m);return res * res % m;}Int inv(Int x, Int m = MOD){return mod_pow(x, m-2, m);}Int h, w;int main(){cin >> h >> w;vector<vector<Int>> a(h, vector<Int>(w));vector<Int> iprod(h, 1);vector<Int> jprod(w, 1);vector<Int> izero(h, 0);vector<Int> jzero(w, 0);Int allprod = 1;Int zero = 0;for(int i = 0;i < h;i++){for(int j = 0;j < w;j++){cin >> a[i][j];if(a[i][j] == 0){izero[i]++;jzero[j]++;zero++;}else{(allprod *= a[i][j]) %= MOD;(iprod[i] *= a[i][j]) %= MOD;(jprod[j] *= a[i][j]) %= MOD;}}}Int q, r, c;cin >> q;while(q--){cin >> r >> c;r--,c--;int zero_cnt = zero - izero[r] - jzero[c] + (a[r][c] == 0);if(zero_cnt > 0){puts("0");continue;}Int ans = allprod * inv(iprod[r] * jprod[c] % MOD) % MOD;if(a[r][c] != 0)(ans *= a[r][c]) %= MOD;cout << ans << endl;}return 0;}