Submission #536299

# Submission time Handle Problem Language Result Execution time Memory
536299 2022-03-12T18:19:30 Z Stickfish Plus Minus (BOI17_plusminus) C++17
12 / 100
1 ms 212 KB
#include <iostream>
#include <map>
using namespace std;
using ll = long long;

const ll MOD = 1000000007;

ll pw(ll a, ll m) {
    if (!m)
        return 1;
    if (m % 2)
        return a * pw(a, m - 1) % MOD;
    return pw(a * a % MOD, m / 2);
}

signed main() {
    ll n, m, k;
    cin >> n >> m >> k;
    map<ll, ll> mprow;
    map<ll, ll> mpcellar;
    bool row = true, cellar = true;
    ll chess = -1;
    for (ll aa = 0; aa < k; ++aa) {
        char c, i, j;
        cin >> c >> i >> j;
        ll t = (c == '+');
        if (mprow.find(i) != mprow.end()) {
            if (mprow[i] != (j + t) % 2)
                row = false;
        } else {
            mprow[i] = (j + t) % 2;
        }
        if (mpcellar.find(j) != mpcellar.end()) {
            if (mpcellar[j] != (i + t) % 2)
                cellar = false;
        } else {
            mpcellar[j] = (i + t) % 2;
        }
        if (chess == -1) {
            chess = (i + j + t) % 2;
        } else if (chess != (i + j + t) % 2)
            chess = -2;
    }
    ll ans = 0;
    if (row)
        ans += pw(2, n - mprow.size());
    ans %= MOD;
    if (cellar)
        ans += pw(2, m - mpcellar.size());
    ans %= MOD;
    if (row && cellar) {
        if (chess == -1) {
            ans += MOD - 2;
        } else if (chess != -2) {
            if (n > 5)
                exit(1);
            ans += MOD - 1;
        }
    }
    ans %= MOD;
    cout << ans << endl;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 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 212 KB Output is correct
6 Correct 0 ms 212 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 0 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 212 KB Output is correct
6 Correct 0 ms 212 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 Incorrect 1 ms 212 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 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 212 KB Output is correct
6 Correct 0 ms 212 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 Incorrect 1 ms 212 KB Output isn't correct
12 Halted 0 ms 0 KB -