zoukankan      html  css  js  c++  java
  • CF367 E

    十字链表模拟

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,m,q;
    struct Node{
    	int v; int d,r;
    }ma[1005*1005];
    int C(int x,int y){
    	return x*(m+1)+y;
    }
    
    int main(){
    	while(~scanf("%d %d %d",&n,&m,&q)) {
    		for(int i = 1; i <= n; ++i) 
    			for(int j = 1; j <= m; ++j) {
    				scanf("%d",&ma[C(i,j)].v);
    			}
    		for(int i = 0; i <= n; ++i)
    			for(int j = 0; j <= m; ++j) {
    				ma[C(i,j)].r = C(i,j+1);
    				ma[C(i,j)].d = C(i+1,j);
    			}
    		for(int i = 0; i < q; ++i) {
    			int a,b,c,d,h,w; scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&h,&w);
    			int t1 = 0; int t2 = 0;
    			for(int i = 1; i < a; ++i) t1 = ma[t1].d; 
    			for(int i = 1; i < b; ++i) t1 = ma[t1].r;
    			for(int i = 1; i < c; ++i) t2 = ma[t2].d;
    			for(int i = 1; i < d; ++i) t2 = ma[t2].r;
    			int x1,x2;
    			
    			x1 = t1; x2 = t2; 
    			for(int i = 1; i <= w; ++i) { 
    				x1 = ma[x1].r; x2 = ma[x2].r;
    				swap(ma[x1].d, ma[x2].d); 
    			}
    			for(int i = 1; i <= h; ++i) {
    				x1 = ma[x1].d; x2 = ma[x2].d;
    				swap(ma[x1].r, ma[x2].r);
    			}
    
    			x1 = t1, x2 = t2;
    			for(int i = 1; i <= h; ++i) {
    				x1 = ma[x1].d; x2 = ma[x2].d;
    				swap(ma[x1].r, ma[x2].r);
    			}
    			for(int i = 1; i <= w; ++i) {
    				x1 = ma[x1].r; x2 = ma[x2].r;
    				swap(ma[x1].d, ma[x2].d);
    			}
    		}
    
    		int tt = 0; 
    		for(int i = 1; i <= n; ++i) {
    			tt = ma[tt].d;
    			int t1 = tt;
    			for(int j = 1; j <= m; ++j) {
    				t1 = ma[t1].r; 
    				if(j!=1) printf(" ");
    				printf("%d",ma[t1].v);		
    			} printf("
    ");
    		}
    
    	}
    	return 0;
    }
    
    


  • 相关阅读:
    2019春总结作业
    第二周作业
    第三周作业
    2019春第三次课程设计实验报告
    2019春第二次课程设计实验报告
    2019春第一次课程设计实验报告
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
  • 原文地址:https://www.cnblogs.com/Basasuya/p/8433758.html
Copyright © 2011-2022 走看看