#include <bits/stdc++.h>
#define int long long
#define pii pair<int, int>
#define all(x) x.begin(), x.end()
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define kill(x) cout << x << endl, exit(0);
#define endl "\n"
using namespace std;
typedef long long ll;
typedef long double ld;
const int MAXN = (int)1e6 + 7;
const int MOD = (int)1e9 + 7;
const ll INF = (ll)1e18 + 7;
int n, m, q, tmp, tmp2, tmp3, tmp4, ans, k, u, v, w, flag, N, M;
int arr[MAXN];
vector<int> Rcmp, Ccmp;
map<int, int> R, C;
char ch;
int POW(int x, int y) {
if (!y) return 1;
if (y&1) return x*POW(x*x%MOD, y/2)%MOD;
return POW(x*x%MOD, y/2);
}
int32_t main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> m >> q;
N = M = 1;
tmp3 = tmp2 = 1;
while (q--) {
cin >> ch >> u >> v;
Rcmp.pb(u); Ccmp.pb(v);
tmp = (ch == '+'? 1 : 0)+u+v;
tmp = (tmp%2);
if (tmp == 0) tmp2 = 0;
else tmp3 = 0;
tmp += 1;
if (R[u] == 0) R[u] = tmp;
else if (R[u] != tmp) N = 0;
if (C[v] == 0) C[v] = tmp;
else if (C[v] != tmp) M = 0;
}
sort(all(Rcmp)); Rcmp.resize(unique(all(Rcmp))-Rcmp.begin());
sort(all(Ccmp)); Ccmp.resize(unique(all(Ccmp))-Ccmp.begin());
// cout << "!" << N << " " << M << endl;
ans = (POW(2, n-Rcmp.size())*N + POW(2, m-Ccmp.size())*M - (tmp2+tmp3) + MOD)%MOD;
cout << ans << endl;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
392 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
392 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
348 KB |
Output is correct |
16 |
Correct |
43 ms |
3220 KB |
Output is correct |
17 |
Correct |
44 ms |
3264 KB |
Output is correct |
18 |
Correct |
43 ms |
3260 KB |
Output is correct |
19 |
Correct |
41 ms |
3200 KB |
Output is correct |
20 |
Correct |
41 ms |
3264 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
392 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
1 ms |
348 KB |
Output is correct |
15 |
Correct |
1 ms |
348 KB |
Output is correct |
16 |
Correct |
43 ms |
3220 KB |
Output is correct |
17 |
Correct |
44 ms |
3264 KB |
Output is correct |
18 |
Correct |
43 ms |
3260 KB |
Output is correct |
19 |
Correct |
41 ms |
3200 KB |
Output is correct |
20 |
Correct |
41 ms |
3264 KB |
Output is correct |
21 |
Correct |
104 ms |
10736 KB |
Output is correct |
22 |
Correct |
0 ms |
348 KB |
Output is correct |
23 |
Correct |
95 ms |
10708 KB |
Output is correct |
24 |
Correct |
90 ms |
10736 KB |
Output is correct |
25 |
Correct |
89 ms |
10840 KB |
Output is correct |
26 |
Correct |
92 ms |
13976 KB |
Output is correct |
27 |
Correct |
91 ms |
13812 KB |
Output is correct |
28 |
Correct |
90 ms |
13880 KB |
Output is correct |
29 |
Correct |
89 ms |
13880 KB |
Output is correct |
30 |
Correct |
114 ms |
16512 KB |
Output is correct |