C/C++ 成绩统计(3排4组版)

请问有小伙伴可以帮忙看看吗??
题目描述:有一幅有m×m像素的图像,0<m≤1000在某图像处理中需要提取该图像中的某行、列、主对角线或副对角线上的元素,请编程实现按要求提取像素的操作。
输入:
第一行有1个整数m,其后的m行每行m个表示像素值的整数。接下来的第一行有一个正整数表示提取像素操作次数k。其后的k行,每行有以下四种情况:

(1)-1 n 表示提取图像的第n行像素。行从1开始由上往下依次编号。

(2)1 n 表示提取图像的第n列像素。列从1开始由左往右依次编号。

(3)-2 表示提取图像的主对角线像素。主对角线是指左上角与右下角的连线。

(4)2 表示提取图像的副对角线像素。副对角线是指右上角与左下角的连线。
输出:
输出k行,每个操作输出占一行,同行数据之间用空格分隔。
样例输入:
4
13 21 45 36
62 22 97 18
37 44 56 40
28 50 39 67
5
1 2
-1 4
-1 1
2
-2
样例输出 :
21 22 44 50
28 50 39 67
13 21 45 36
36 97 44 28
13 22 56 67
这是我写的代码,自己运行可以,但是一提交到系统就提示运行错误。

#include<iostream>
using namespace std;
int main()
{
    int m, k,a,n,q,arr[10][10];
    cin >> m;
    for (int s = 0; s < m; s++) 
    {
        for (int q = 0; q < m; q++)
            cin >> arr[s][q];
    }
    cin >> k;
    for (int i = 0; i < k; i++)
    {
        cin >> a;
        if(a==1 ||a==-1)
            cin >> n;
        if (a == -1)
        {
            for (int j = 0; j < m; j++)
                cout << arr[n - 1][j] << " ";
        }
        else if (a == 1)
        {
            for (int p = 0; p < m; p++)
                cout << arr[p][n - 1] << " ";
        }
        else if (a == 2)
        {
            for (int x = 0; x < m; x++)
                for (int y = 0; y < m; y++)
                    if (x + y == m - 1)
                        cout << arr[x][y]<<" ";
        }
        else if (a == -2)
        {
            for (int x = 0; x < m; x++)
                for (int y = 0; y < m; y++)
                    if (x ==y)
                    cout << arr[x][y] << " ";
        }
    }
    return 0;
}

输出没有换行