# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
132495 | 2019-07-19T04:40:51 Z | 조승현(#3204) | Plus Minus (BOI17_plusminus) | C++14 | 74 ms | 1656 KB |
#include<cstdio> #include<algorithm> using namespace std; int n, m, K; struct point { int x, y, ck; bool operator <(const point &p)const { return x != p.x ? x < p.x : y < p.y; } }w[101000]; long long Mod = 1000000007; long long Pow(long long a, long long b) { long long r = 1; while (b) { if (b & 1)r = r * a%Mod; a = a * a%Mod; b >>= 1; } return r; } long long Calc(int c1, int c2) { int i; if(c1 && c2){ for (i = 0; i < K; i++) { if ( (((w[i].x^c1) ^ (w[i].y^c2)) & 1) ^ w[i].ck)return 0; } return 1; } if (c1) { sort(w, w + K); int r = n; for (i = 1; i < K; i++) { if (w[i].x == w[i - 1].x && ((w[i].y^w[i - 1].y^w[i].ck^w[i - 1].ck) & 1))return 0; } for (i = 0; i < K; i++)if (i == K - 1 || w[i].x != w[i + 1].x)r--; return Pow(2, r); } else { for (i = 0; i < K; i++)swap(w[i].x, w[i].y); sort(w, w + K); int r = m, ck = 0; for (i = 1; i < K; i++) { if (w[i].x == w[i - 1].x && ((w[i].y^w[i - 1].y^w[i].ck^w[i - 1].ck) & 1))ck = 1; } for (i = 0; i < K; i++)if (i == K - 1 || w[i].x != w[i + 1].x)r--; for (i = 0; i < K; i++)swap(w[i].x, w[i].y); if (ck == 1)return 0; return Pow(2, r); } } int main() { int i, j; char pp[3]; scanf("%d%d%d", &n, &m, &K); for (i = 0; i < K; i++) { scanf("%s", pp); scanf("%d%d", &w[i].x, &w[i].y); if (pp[0] == '+')w[i].ck = 1; } long long s1 = Calc(1, 0) + Calc(2, 0) + Calc(0, 1) + Calc(0, 2); long long s2 = Calc(1, 1) + Calc(1, 2) + Calc(2, 1) + Calc(2, 2); printf("%lld\n", (s1 - s2 + Mod * 4) % Mod * Pow(2,Mod-2)%Mod); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 2 ms | 256 KB | Output is correct |
4 | Correct | 2 ms | 348 KB | Output is correct |
5 | Correct | 2 ms | 256 KB | Output is correct |
6 | Correct | 2 ms | 376 KB | Output is correct |
7 | Correct | 2 ms | 256 KB | Output is correct |
8 | Correct | 2 ms | 256 KB | Output is correct |
9 | Correct | 2 ms | 376 KB | Output is correct |
10 | Correct | 2 ms | 376 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 2 ms | 256 KB | Output is correct |
4 | Correct | 2 ms | 348 KB | Output is correct |
5 | Correct | 2 ms | 256 KB | Output is correct |
6 | Correct | 2 ms | 376 KB | Output is correct |
7 | Correct | 2 ms | 256 KB | Output is correct |
8 | Correct | 2 ms | 256 KB | Output is correct |
9 | Correct | 2 ms | 376 KB | Output is correct |
10 | Correct | 2 ms | 376 KB | Output is correct |
11 | Correct | 2 ms | 252 KB | Output is correct |
12 | Correct | 2 ms | 296 KB | Output is correct |
13 | Correct | 2 ms | 376 KB | Output is correct |
14 | Correct | 2 ms | 256 KB | Output is correct |
15 | Correct | 2 ms | 376 KB | Output is correct |
16 | Correct | 58 ms | 1400 KB | Output is correct |
17 | Correct | 57 ms | 1400 KB | Output is correct |
18 | Correct | 57 ms | 1528 KB | Output is correct |
19 | Correct | 59 ms | 1556 KB | Output is correct |
20 | Correct | 58 ms | 1528 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 2 ms | 256 KB | Output is correct |
4 | Correct | 2 ms | 348 KB | Output is correct |
5 | Correct | 2 ms | 256 KB | Output is correct |
6 | Correct | 2 ms | 376 KB | Output is correct |
7 | Correct | 2 ms | 256 KB | Output is correct |
8 | Correct | 2 ms | 256 KB | Output is correct |
9 | Correct | 2 ms | 376 KB | Output is correct |
10 | Correct | 2 ms | 376 KB | Output is correct |
11 | Correct | 2 ms | 252 KB | Output is correct |
12 | Correct | 2 ms | 296 KB | Output is correct |
13 | Correct | 2 ms | 376 KB | Output is correct |
14 | Correct | 2 ms | 256 KB | Output is correct |
15 | Correct | 2 ms | 376 KB | Output is correct |
16 | Correct | 58 ms | 1400 KB | Output is correct |
17 | Correct | 57 ms | 1400 KB | Output is correct |
18 | Correct | 57 ms | 1528 KB | Output is correct |
19 | Correct | 59 ms | 1556 KB | Output is correct |
20 | Correct | 58 ms | 1528 KB | Output is correct |
21 | Correct | 65 ms | 1528 KB | Output is correct |
22 | Correct | 2 ms | 376 KB | Output is correct |
23 | Correct | 63 ms | 1400 KB | Output is correct |
24 | Correct | 62 ms | 1528 KB | Output is correct |
25 | Correct | 63 ms | 1400 KB | Output is correct |
26 | Correct | 58 ms | 1272 KB | Output is correct |
27 | Correct | 59 ms | 1324 KB | Output is correct |
28 | Correct | 58 ms | 1272 KB | Output is correct |
29 | Correct | 59 ms | 1272 KB | Output is correct |
30 | Correct | 74 ms | 1656 KB | Output is correct |