hdu5671

5279 ワード

Matrix Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1031 Accepted Submission(s): 430
Problem Description There is a matrix M that has n rows and m columns (1≤n≤1000,1≤m≤1000).Then we perform q(1≤q≤100,000) operations:
1 x y: Swap row x and row y (1≤x,y≤n);
2 x y: Swap column x and column y (1≤x,y≤m);
3 x y: Add y to all elements in row x (1≤x≤n,1≤y≤10,000);
4 x y: Add y to all elements in column x (1≤x≤m,1≤y≤10,000);
Input There are multiple test cases. The first line of input contains an integer T(1≤T≤20) indicating the number of test cases. For each test case:
The first line contains three integers n, m and q. The following n lines describe the matrix M.(1≤Mi,j≤10,000) for all (1≤i≤n,1≤j≤m). The following q lines contains three integers a(1≤a≤4), x and y.
Output For each test case, output the matrix M after all q operations.
Sample Input
2 3 4 2 1 2 3 4 2 3 4 5 3 4 5 6 1 1 2 3 1 10 2 2 2 1 10 10 1 1 1 2 2 1 2
Sample Output
12 13 14 15 1 2 3 4 3 4 5 6 1 10 10 1
この問題は直接GGと書いて、記録しなければなりません.
#include<cstdio>
#include<cstring>

const int maxn=1005;
int x[maxn];
int y[maxn];
int a[maxn][maxn];
int addx[maxn];
int addy[maxn];

void swap(int &aa,int &bb){
    if((aa^bb)){
        aa^=bb^=aa^=bb;
    }
}
int main(){
    int n,m,k;
    int T;
    scanf("%d",&T);

    while(T--){
        scanf("%d%d%d",&n,&m,&k);
        for(int i=1;i<=n;++i){
            for(int j=1;j<=m;++j){
                scanf("%d",&a[i][j]);
                y[j]=j;
                addy[j]=0;
            }
            x[i]=i;
            addx[i]=0;
        }
        while(k--){
            int o,p,q;
            scanf("%d%d%d",&o,&p,&q);
            if(o==1){
                swap(x[p],x[q]);
            }else if(o==2){
                swap(y[p],y[q]);
            }else if(o==3){
                addx[x[p]]+=q;
            }else{
                addy[y[p]]+=q;
            }
        }
        for(int i=1;i<=n;++i){
            for(int j=1;j<=m;++j){
                printf("%d%c",a[x[i]][y[j]]+addx[x[i]]+addy[y[j]],j==m?'
'
:' '); } } } return 0; }