fork download
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<algorithm>
  7. #include<map>
  8. #include<vector>
  9. using namespace std;
  10.  
  11. int main(){
  12. int n,temp,s=0;
  13. cin>>n;
  14. int c[n+1];
  15. for(int i=1;i<=n;i++){cin>>c[i];s+=c[i];}
  16. int nums[100][2],pos[100][100];
  17. for(int i=1;i<=n;i++){
  18. for(int k=1;k<=c[i];k++){
  19. cin>>temp;
  20. nums[temp][0]=i;
  21. nums[temp][1]=k;
  22. pos[i][k]=temp;
  23. }
  24. }
  25. int cur=1;
  26. int x,y,p,q;
  27. int opcount=0;
  28. int opr[10000][4];
  29. for(int i=1;i<=n;i++){
  30. for(int k=1;k<=c[i];k++){
  31. x=nums[cur][0];
  32. y=nums[cur][1];
  33. p=i;
  34. q=k;
  35. temp=pos[p][q];
  36. nums[temp][0]=x;
  37. nums[temp][1]=y;
  38. pos[x][y]=temp;
  39. pos[i][k]=cur;
  40. nums[cur][0]=i;
  41. nums[cur][1]=k;
  42. cur++;
  43. if(x==p&&y==q)continue;
  44. else{
  45. opr[opcount][0]=x;
  46. opr[opcount][1]=y;
  47. opr[opcount][2]=p;
  48. opr[opcount][3]=q;
  49. opcount++;
  50. }
  51. //cout<<x<<" "<<y<<" "<<p<<" "<<q<<"\n";
  52. }
  53. }
  54. cout<<opcount<<"\n";
  55. for(int i=0;i<opcount;i++){
  56. printf("%d %d %d %d\n",opr[i][0],opr[i][1],opr[i][2],opr[i][3]);
  57. }
  58. return 0;
  59. }
Success #stdin #stdout 0.01s 2800KB
stdin
3
3 2 1
4 3 5
6 1
2
stdout
5
2 2 1 1
3 1 1 2
3 1 1 3
2 2 2 1
3 1 2 2