Неправильные условия ветвления: Внутренний цикл for содержит условие ветвления, которое проверяет, достигло ли j значения m в обеих ветвях (четной и нечетной строке). Это приведет к тому, что последняя строка матрицы не будет заполнена.
Исправленный код:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n, m, cnt = 1;
int a[1000][1000];
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (i % 2 == 0) {
a[i][j] = cnt;
if (j == m - 1) { cnt = cnt + m; break; }
cnt++;
}
else {
a[i][j] = cnt;
if (j == m - 1) { cnt = cnt + m; break; }
cnt--;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << setw(4) << a[i][j];
}
cout << endl;
}
return 0;
}