#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MOD = 1e9 + 7;
unordered_map<int, int> frecvL, frecvC;
int lgPut( int x, int n ) {
if ( n == 0 )
return 1;
int p = lgPut( x, n / 2 );
p = (long long)p * p % MOD;
if ( n % 2 == 1 )
p = (long long)p * x % MOD;
return p;
}
signed main() {
int n, m, k, lin = 0, col = 0;
bool isPossibleL = true, isPossibleC = true, isPossibleChess1 = true, isPossibleChess2 = true;
cin >> n >> m >> k;
for ( int i = 0; i < k; i++ ) {
char ch;
int s, l, c;
cin >> ch >> l >> c;
s = (ch == '+' ? +1 : -1);
if ( frecvL[l] == 0 )
lin++;
else if ( frecvL[l] != s * (c % 2 == 0 ? 1 : -1) )
isPossibleL = false;
frecvL[l] = s * (c % 2 == 0 ? 1 : -1);
if ( frecvC[c] == 0 )
col++;
else if ( frecvC[c] != s * (l % 2 == 0 ? 1 : -1) )
isPossibleC = false;
frecvC[c] = s * (l % 2 == 0 ? 1 : -1);
if ( (l + c) % 2 == 0 && s == +1 )
isPossibleChess1 = false;
if ( (l + c) % 2 == 1 && s == -1 )
isPossibleChess1 = false;
if ( (l + c) % 2 == 0 && s == -1 )
isPossibleChess2 = false;
if ( (l + c) % 2 == 1 && s == +1 )
isPossibleChess2 = false;
}
int ans = (isPossibleL * lgPut( 2, n - lin ) + isPossibleC * lgPut( 2, m - col ) - isPossibleChess1 - isPossibleChess2 + MOD) % MOD;
cout << ans;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
600 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 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 |
0 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
600 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 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 |
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 |
37 ms |
1268 KB |
Output is correct |
17 |
Correct |
37 ms |
1360 KB |
Output is correct |
18 |
Correct |
37 ms |
1372 KB |
Output is correct |
19 |
Correct |
36 ms |
1468 KB |
Output is correct |
20 |
Correct |
36 ms |
1372 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
600 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
1 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 |
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 |
37 ms |
1268 KB |
Output is correct |
17 |
Correct |
37 ms |
1360 KB |
Output is correct |
18 |
Correct |
37 ms |
1372 KB |
Output is correct |
19 |
Correct |
36 ms |
1468 KB |
Output is correct |
20 |
Correct |
36 ms |
1372 KB |
Output is correct |
21 |
Correct |
62 ms |
6640 KB |
Output is correct |
22 |
Correct |
1 ms |
348 KB |
Output is correct |
23 |
Correct |
64 ms |
6772 KB |
Output is correct |
24 |
Correct |
68 ms |
6748 KB |
Output is correct |
25 |
Correct |
62 ms |
6648 KB |
Output is correct |
26 |
Correct |
75 ms |
8776 KB |
Output is correct |
27 |
Correct |
74 ms |
8520 KB |
Output is correct |
28 |
Correct |
87 ms |
8560 KB |
Output is correct |
29 |
Correct |
76 ms |
8648 KB |
Output is correct |
30 |
Correct |
92 ms |
11360 KB |
Output is correct |