#include<bits/stdc++.h>
#define NOT_STONKS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
const int maxn = 2e5 + 10; //4e6 + 10; //3e5 + 10;
const int mod = 1e9 + 7; //998244353;
typedef long long ll;
int n, m, k;
map<int, bool> br, bc, mpr, mpc;
ll ans = 0;
ll power(ll x, int y) {
if (y == 0) return 1;
if (y == 1) return x;
ll tmp = power(x, y >> 1);
if (y & 1)
return tmp * tmp % mod * x % mod;
return tmp * tmp % mod;
}
int main() {
NOT_STONKS;
cin >> n >> m >> k;
bool R = true, C = true, lanat_be = true, in_zendegi = true;
for (int i = 0; i < k; i++) {
int x, y;
char c;
cin >> c >> x >> y;
int tx = x, ty = y;
if (c == '-') ty ^= 1, tx ^= 1, lanat_be &= (x + y) & 1, in_zendegi &= (x + y) & 1 ^ 1;
else lanat_be &= (x + y) & 1 ^ 1, in_zendegi &= (x + y) & 1;
if (!br[x]) br[x] = true, mpr[x] = ty & 1;
else R &= (mpr[x] & 1) == (ty & 1);
if (!bc[y]) bc[y] = true, mpc[y] = tx & 1;
else C &= (mpc[y] & 1) == (tx & 1);
}
if (R) ans += power(2, n - int(mpr.size())), ans %= mod;
if (C) ans += power(2, m - int(mpc.size())), ans %= mod;
ans -= (lanat_be + in_zendegi);
cout << ans << endl;
return 0;
}
Compilation message
plusminus.cpp: In function 'int main()':
plusminus.cpp:32:88: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
32 | if (c == '-') ty ^= 1, tx ^= 1, lanat_be &= (x + y) & 1, in_zendegi &= (x + y) & 1 ^ 1;
| ~~~~~~~~^~~
plusminus.cpp:33:34: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
33 | else lanat_be &= (x + y) & 1 ^ 1, in_zendegi &= (x + y) & 1;
| ~~~~~~~~^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
320 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
320 KB |
Output is correct |
10 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
320 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
320 KB |
Output is correct |
10 |
Correct |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
1 ms |
212 KB |
Output is correct |
13 |
Correct |
1 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
324 KB |
Output is correct |
15 |
Correct |
1 ms |
328 KB |
Output is correct |
16 |
Correct |
42 ms |
1316 KB |
Output is correct |
17 |
Correct |
44 ms |
1320 KB |
Output is correct |
18 |
Correct |
40 ms |
1292 KB |
Output is correct |
19 |
Correct |
43 ms |
1324 KB |
Output is correct |
20 |
Correct |
42 ms |
1288 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
320 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
320 KB |
Output is correct |
10 |
Correct |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
1 ms |
212 KB |
Output is correct |
13 |
Correct |
1 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
324 KB |
Output is correct |
15 |
Correct |
1 ms |
328 KB |
Output is correct |
16 |
Correct |
42 ms |
1316 KB |
Output is correct |
17 |
Correct |
44 ms |
1320 KB |
Output is correct |
18 |
Correct |
40 ms |
1292 KB |
Output is correct |
19 |
Correct |
43 ms |
1324 KB |
Output is correct |
20 |
Correct |
42 ms |
1288 KB |
Output is correct |
21 |
Correct |
161 ms |
12380 KB |
Output is correct |
22 |
Correct |
0 ms |
212 KB |
Output is correct |
23 |
Correct |
160 ms |
12436 KB |
Output is correct |
24 |
Correct |
156 ms |
12304 KB |
Output is correct |
25 |
Correct |
150 ms |
12428 KB |
Output is correct |
26 |
Correct |
166 ms |
16848 KB |
Output is correct |
27 |
Correct |
169 ms |
16824 KB |
Output is correct |
28 |
Correct |
176 ms |
16784 KB |
Output is correct |
29 |
Correct |
185 ms |
16780 KB |
Output is correct |
30 |
Correct |
216 ms |
19956 KB |
Output is correct |