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