1332.放水 SDNUOJ1332
Description
给定一个N*N的矩阵,支持3种操作:
swapR a b:交换第a行和第b行的所有元素;
swapC a b:交换第a列和第b列的所有元素;
Ask a b:询问第a行第b列元素的值
Input
第一行N,K,为矩阵大小和操作个数
接下来N行每行N个正整数代表矩阵元素
接下来K行每行一个操作,格式如题目所述。
1 <= N <= 100; 1 <= K <= 20000;
Output
对于每个询问,输出一行作为答案。
Sample Input
2 3
0 1
2 3
Ask 2 2
swapR 1 2
Ask 1 1
Sample Output
3
2
#include <iostream>
#include <algorithm>
using namespace std;
int c[105][105];
int main()
{
int n, k;
while(cin >> n >> k)
{
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
cin >> c[i][j];
for(int i = 0; i < k; ++i)
{
string s;
int a, b;
cin >> s >> a >> b;
if(s == "Ask")
cout << c[a][b] << '\n';
if(s == "swapR")
for(int j = 1; j <= n; ++j)
swap(c[a][j], c[b][j]);
if(s == "swapC")
for(int i = 0; i <= n; ++i)
swap(c[i][a], c[i][b]);
}
}
return 0;
}