Submission #933281

# Submission time Handle Problem Language Result Execution time Memory
933281 2024-02-25T11:15:58 Z LucaIlie Plus Minus (BOI17_plusminus) C++17
12 / 100
1 ms 348 KB
#include <bits/stdc++.h>

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;
}

int 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 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 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 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 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 Incorrect 1 ms 344 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 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 Incorrect 1 ms 344 KB Output isn't correct
12 Halted 0 ms 0 KB -