蓝桥杯-回文日期,我这样写,在蓝桥杯真题训练里为啥没有输出

半小时写的代码,没注意优化
但在vs里运行是没任何问题的
在蓝桥杯模拟上就没法输出,是啥情况?
闰年感觉不需要考虑,最高是到8999年,而闰年的2月29对应9220年。
题目:给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    long date;
    scanf_s("%d", &date);
    int y = date / 10000;
    int m = date % 10000 / 100;
    int d = date % 100;
    int year = y, month = m, day = d + 1;
    int j, k;
    int first = 1, second = 1;
    for (int i = year; i < 9000 && (second == 1 || first == 1); i++) {
        for (j = month; j < 13 && (second == 1 || first == 1); j++) {
            int maxday = 0;
            switch (j)
            {
            case 1:
                maxday = 31;
                break;
            case 2:
                maxday = 28;
                break;
            case 3:
                maxday = 31;
                break;
            case 4:
                maxday = 30;
                break;
            case 5:
                maxday = 31;
                break;
            case 6:
                maxday = 30;
                break;
            case 7:
                maxday = 31;
                break;
            case 8:
                maxday = 31;
                break;
            case 9:
                maxday = 30;
                break;
            case 10:
                maxday = 31;
                break;
            case 11:
                maxday = 30;
                break;
            case 12:
                maxday = 31;
                break;
            default:
                break;
            }
            for (k = day; k <= maxday && (second == 1 || first == 1); k++)
            {
                if (first == 1 && i == j % 10 * 10 + j / 10 + k % 10 * 1000 + k / 10 * 100) {
                    printf("%d%d%d%d%d\n", i, j / 10, j % 10, k / 10, k % 10);
                    first = 0;
                }

                if (first == 0 && second == 1 && i == j % 10 * 10 + j / 10 + k % 10 * 1000 + k / 10 * 100 && (j / 10 + j % 10 * 10) == (k / 10 + k % 10 * 10)) {
                    printf("%d%d%d%d%d", i, j / 10, j % 10, k / 10, k % 10);
                    second = 0;
                }
            }
            if (k == maxday + 1) day = 1;
        }
        if (j == 13) month = 1;
    }
    return 0;
}