#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
// mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
const int MOD = 1e9 + 7 ;
ll fastpow ( ll x , ll pw ) {
ll ret = 1 ;
while ( pw > 0 ) {
if ( ( pw % 2 ) == 0 ) {
x = ( x * x ) % MOD ;
pw /= 2 ;
}
else {
ret = ( ret * x ) % MOD ;
-- pw ;
}
}
return ret ;
}
int n , m , k ;
map < int , int > wr , wc ;
void solve ( ) {
cin >> n >> m >> k ;
int rem_rows = n , rem_cols = m ;
bool bad_row = false , bad_col = false ;
bool ch1 = true , ch2 = true ;
for ( int i = 1 ; i <= k ; ++ i ) {
char c ; cin >> c ;
int val = ( c == '+' ) ;
int x , y ; cin >> x >> y ;
int hh_row = ( 1 << ( ( y % 2 ) ^ val ) ) ;
if ( wr[ x ] == 0 ) { -- rem_rows ; }
wr[ x ] |= hh_row ;
if ( wr[ x ] == 3 ) { bad_row = true ; }
int hh_col = ( 1 << ( ( x % 2 ) ^ val ) ) ;
if ( wc[ y ] == 0 ) { -- rem_cols ; }
wc[ y ] |= hh_col ;
if ( wc[ y ] == 3 ) { bad_col = true ; }
if ( ( x + y ) % 2 == 0 ) {
if ( val == 1 ) { ch1 = false ; }
else { ch2 = false ; }
}
else {
if ( val == 1 ) { ch2 = false ; }
else { ch1 = false ; }
}
}
ll ans = 0 ;
if ( bad_row == false ) {
ans += fastpow ( 2 , rem_rows ) ;
}
if ( bad_col == false ) {
ans += fastpow ( 2 , rem_cols ) ;
}
if ( bad_row == false && bad_col == false ) {
if ( ch1 == true ) { ans = ( ans - 1 + MOD ) % MOD ; }
if ( ch2 == true ) { ans = ( ans - 1 + MOD ) % MOD ; }
}
cout << ans << "\n" ;
}
int main ( ) {
ios_base :: sync_with_stdio ( false ) ;
cin.tie ( NULL ) ;
int t = 1 ; // cin >> t ;
while ( t -- ) { solve ( ) ; }
return 0 ;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
320 KB |
Output is correct |
6 |
Correct |
1 ms |
320 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
320 KB |
Output is correct |
6 |
Correct |
1 ms |
320 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
11 |
Correct |
1 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
328 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
2 ms |
340 KB |
Output is correct |
16 |
Correct |
48 ms |
1280 KB |
Output is correct |
17 |
Correct |
48 ms |
1288 KB |
Output is correct |
18 |
Correct |
47 ms |
1228 KB |
Output is correct |
19 |
Correct |
46 ms |
1284 KB |
Output is correct |
20 |
Correct |
48 ms |
1280 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
320 KB |
Output is correct |
6 |
Correct |
1 ms |
320 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
0 ms |
212 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
11 |
Correct |
1 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
328 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
2 ms |
340 KB |
Output is correct |
16 |
Correct |
48 ms |
1280 KB |
Output is correct |
17 |
Correct |
48 ms |
1288 KB |
Output is correct |
18 |
Correct |
47 ms |
1228 KB |
Output is correct |
19 |
Correct |
46 ms |
1284 KB |
Output is correct |
20 |
Correct |
48 ms |
1280 KB |
Output is correct |
21 |
Correct |
102 ms |
7200 KB |
Output is correct |
22 |
Correct |
0 ms |
212 KB |
Output is correct |
23 |
Correct |
105 ms |
7272 KB |
Output is correct |
24 |
Correct |
104 ms |
7244 KB |
Output is correct |
25 |
Correct |
109 ms |
7204 KB |
Output is correct |
26 |
Correct |
104 ms |
9936 KB |
Output is correct |
27 |
Correct |
108 ms |
9848 KB |
Output is correct |
28 |
Correct |
111 ms |
9908 KB |
Output is correct |
29 |
Correct |
136 ms |
9844 KB |
Output is correct |
30 |
Correct |
133 ms |
11924 KB |
Output is correct |