1 | if (M >= 1 && N >= 3) |
2 | for (int c0 = -1; c0 <= (3 * M + N - 5) / 100; c0 += 1) { |
3 | for (int c1 = max(max(0, c0 - (2 * M + N + 95) / 100 + 1), floord(-N + 100 * c0 + 106, 300)); c1 <= min(min(c0, M / 100), (c0 + 1) / 3); c1 += 1) |
4 | for (int c2 = max(200 * c1 - 3, 100 * c0 - 100 * c1); c2 <= min(min(2 * M + N - 5, 100 * c0 - 100 * c1 + 99), N + 200 * c1 + 193); c2 += 1) { |
5 | if (c1 >= 1 && N + 200 * c1 >= c2 + 7) |
6 | S3(c0 - c1, c1 - 1, c1, 100 * c1 - 1, -200 * c1 + c2 + 6); |
7 | for (int c3 = max(max(1, 100 * c1), -N + (N + c2) / 2 + 3); c3 <= min(min(M, 100 * c1 + 99), c2 / 2 + 1); c3 += 1) |
8 | S1(c0 - c1, c1, c3, c2 - 2 * c3 + 4); |
9 | if (M >= 100 * c1 + 100 && c2 >= 200 * c1 + 197) |
10 | S2(c0 - c1, c1, c1 + 1, 100 * c1 + 99, -200 * c1 + c2 - 194); |
11 | } |
12 | S4(c0); |
13 | } |
14 | |