1.   CodeForces 222B     Cosmic Tables

数据量比较大,这里不能直接暴力,用行指针和列指针表示当前行列是原来的第几行第几列

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int N = 1005;
int n ,m , k , row[N] , col[N] , a[N][N];
char s[5] ;
int p1 , p2;
int main()
{
  //  freopen("a.in" , "r" , stdin);
    while(scanf("%d%d%d" , &n , &m , &k) == 3)
    {
        for(int i=1 ; i<=n ; i++)
            for(int j =1 ; j<=m ; j++)
                scanf("%d" , &a[i][j]);
        int maxn = max(n , m);
        for(int i=1; i<=maxn ; i++)
            row[i] = i , col[i] = i;
        for(int i=1 ; i<=k ; i++){
            scanf("%s%d%d" , s , &p1 , &p2);
            if(s[0] == 'g') printf("%d\n" , a[row[p1]][col[p2]]);
            else if(s[0] == 'c'){
                int t = col[p1];
                col[p1] = col[p2] , col[p2] = t;
            }
            else{
                int t = row[p1];
                row[p1] = row[p2] , row[p2] = t;
            }
        }
    }
    return 0;
}
View Code

相关文章: