#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
// Ofast, O0, O1, O2, O3, unroll-loops, fast-math, trapv
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
#define Mp make_pair
#define sep ' '
#define endl '\n'
#define F first
#define S second
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define kill(res) cout << res << '\n', exit(0);
#define set_dec(x) cout << fixed << setprecision(x);
#define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define file_io freopen("input.txt", "r", stdin) ; freopen("output.txt", "w", stdout);
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const ll N = 3e5 + 50;
const ll Mod = 1e9 + 7;
ll n, m, k;
map<int, int> cond1, cond2;
ll mod(ll a, ll b = Mod){
while(a >= b) a -= b;
return a;
}
ll power(ll a, ll b, ll md = Mod){
ll out = 1;
for(; b; b /= 2, a = a * a % md){
if(b % 2) out = out * a % md;
}
return out;
}
int main(){
fast_io;
cin >> n >> m >> k;
if(k == 0){
ll res = mod(power(2, n) + power(2, m) - 2 + Mod);
kill(res);
}
char t; int x, y;
for(int i = 1; i <= k; i++){
cin >> t >> x >> y;
int z1 = (t == '+') + y; z1 %= 2;
int z2 = (t == '+') + x; z2 %= 2;
cond1[x] |= (1 << z1);
cond2[y] |= (1 << z2);
}
bool a = false, b = false;
for(auto i: cond1) if(i.S == 3) a = true;
for(auto i: cond2) if(i.S == 3) b = true;
if(a && b) kill(0);
if(a){
ll cnt = cond2.size();
kill(power(2, m - cnt));
}
if(b){
ll cnt = cond1.size();
kill(power(2, n - cnt));
}
ll cnt1 = n - cond1.size();
ll cnt2 = m - cond2.size();
ll res = mod(power(2, cnt1) + power(2, cnt2) - 1 + Mod);
kill(res);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
464 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
456 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 |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
1 ms |
596 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
464 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
456 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 |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
1 ms |
596 KB |
Output is correct |
11 |
Correct |
1 ms |
344 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 |
600 KB |
Output is correct |
16 |
Correct |
22 ms |
1432 KB |
Output is correct |
17 |
Correct |
22 ms |
1420 KB |
Output is correct |
18 |
Correct |
22 ms |
1368 KB |
Output is correct |
19 |
Correct |
22 ms |
1368 KB |
Output is correct |
20 |
Correct |
22 ms |
1416 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
464 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
456 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 |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
1 ms |
596 KB |
Output is correct |
11 |
Correct |
1 ms |
344 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 |
600 KB |
Output is correct |
16 |
Correct |
22 ms |
1432 KB |
Output is correct |
17 |
Correct |
22 ms |
1420 KB |
Output is correct |
18 |
Correct |
22 ms |
1368 KB |
Output is correct |
19 |
Correct |
22 ms |
1368 KB |
Output is correct |
20 |
Correct |
22 ms |
1416 KB |
Output is correct |
21 |
Correct |
58 ms |
7252 KB |
Output is correct |
22 |
Correct |
0 ms |
348 KB |
Output is correct |
23 |
Correct |
59 ms |
7204 KB |
Output is correct |
24 |
Correct |
59 ms |
7352 KB |
Output is correct |
25 |
Correct |
59 ms |
7248 KB |
Output is correct |
26 |
Correct |
71 ms |
10576 KB |
Output is correct |
27 |
Correct |
61 ms |
9960 KB |
Output is correct |
28 |
Correct |
62 ms |
9880 KB |
Output is correct |
29 |
Correct |
63 ms |
10060 KB |
Output is correct |
30 |
Correct |
77 ms |
11856 KB |
Output is correct |