#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define endl '\n'
#define pii pair<int, int>
using namespace std;
const int mxN = 1e5 + 5;
const int mod = 1e9 + 7;
struct point{
char c; int x, y;
point(){}
point(char c1, int x1, int y1){
c = c1; x = x1; y = y1;
}
};
int n, m, k, ans;
vector<point> v;
int binpow(int x, int y){
int res = 1;
while(y != 0){
if(y % 2 == 1) res = (res * x) % mod;
x = (x * x) % mod;
y /= 2;
}
return res;
}
void check1(){
int cnt = n;
bool flag = true;
map<int, int> m1;
for(int i = 0; i < k; ++i){
point tmp = v[i];
int tmp1 = ((tmp.c == '+') != (tmp.y % 2 == 1));
if(m1.find(tmp.x) == m1.end()){
m1[tmp.x] = tmp1;
cnt--;
}
else{
if(m1[tmp.x] != tmp1) flag = false;
}
}
if(flag) ans = (ans + binpow(2, cnt)) % mod;
}
void check2(){
int cnt = m;
bool flag = true;
map<int, int> m1;
for(int i = 0; i < k; ++i){
point tmp = v[i];
int tmp1 = ((tmp.c == '+') != (tmp.x % 2 == 1));
if(m1.find(tmp.y) == m1.end()){
m1[tmp.y] = tmp1;
cnt--;
}
else{
if(m1[tmp.y] != tmp1) flag = false;
}
}
if(flag) ans = (ans + binpow(2, cnt)) % mod;
}
void check3(){
bool flag, flag1; flag = flag1 = true;
for(int i = 0; i < k; ++i){
point tmp = v[i];
if((tmp.x + tmp.y) % 2 == (tmp.c == '+')) flag = false;
else flag1 = false;
}
if(flag) ans--;
if(flag1) ans--;
cout << ans << endl;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
//freopen("Bai3.inp", "r", stdin);
//freopen("Bai3.out", "w", stdout);
cin >> n >> m >> k;
for(int i = 1; i <= k; ++i){
char c; int x, y;
cin >> c >> x >> y;
point tmp(c, x, y);
v.pb(tmp);
}
check1(); check2(); check3();
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
324 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
320 KB |
Output is correct |
5 |
Correct |
1 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 |
1 ms |
320 KB |
Output is correct |
9 |
Correct |
1 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
324 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
320 KB |
Output is correct |
5 |
Correct |
1 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 |
1 ms |
320 KB |
Output is correct |
9 |
Correct |
1 ms |
212 KB |
Output is correct |
10 |
Correct |
0 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 |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
328 KB |
Output is correct |
16 |
Correct |
46 ms |
4336 KB |
Output is correct |
17 |
Correct |
43 ms |
4424 KB |
Output is correct |
18 |
Correct |
47 ms |
4368 KB |
Output is correct |
19 |
Correct |
43 ms |
4380 KB |
Output is correct |
20 |
Correct |
42 ms |
4344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
324 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
320 KB |
Output is correct |
5 |
Correct |
1 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 |
1 ms |
320 KB |
Output is correct |
9 |
Correct |
1 ms |
212 KB |
Output is correct |
10 |
Correct |
0 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 |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
328 KB |
Output is correct |
16 |
Correct |
46 ms |
4336 KB |
Output is correct |
17 |
Correct |
43 ms |
4424 KB |
Output is correct |
18 |
Correct |
47 ms |
4368 KB |
Output is correct |
19 |
Correct |
43 ms |
4380 KB |
Output is correct |
20 |
Correct |
42 ms |
4344 KB |
Output is correct |
21 |
Correct |
94 ms |
7340 KB |
Output is correct |
22 |
Correct |
1 ms |
212 KB |
Output is correct |
23 |
Correct |
99 ms |
7404 KB |
Output is correct |
24 |
Correct |
101 ms |
7396 KB |
Output is correct |
25 |
Correct |
100 ms |
7400 KB |
Output is correct |
26 |
Correct |
101 ms |
8468 KB |
Output is correct |
27 |
Correct |
87 ms |
8412 KB |
Output is correct |
28 |
Correct |
92 ms |
8440 KB |
Output is correct |
29 |
Correct |
90 ms |
8496 KB |
Output is correct |
30 |
Correct |
144 ms |
9832 KB |
Output is correct |