fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int m,r;
  8. scanf("%d%d",&m,&r);
  9.  
  10. int n = m*r;
  11. int vet[n], pos[n+1];
  12.  
  13. for(int i=0; i<n; i++)
  14. {
  15. scanf("%d",&vet[i]);
  16. if(vet[i] != 0) pos[vet[i]] = i;
  17. }
  18.  
  19. int ans = 0, x=0;
  20. for(int i=0; i<n; i++)
  21. {
  22. if((i+1)%m == 0) continue;
  23. x++;
  24.  
  25. if(vet[i] != x)
  26. {
  27. ans++;
  28. printf("Swap: %d %d\n",i+1, pos[x]+1);
  29. pos[vet[i]] = pos[x];
  30. swap(vet[i], vet[pos[x]]);
  31. }
  32. }
  33.  
  34. printf("Number of swaps: %d\n",ans);
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 3100KB
stdin
4 2
0 1 2 3 0 4 5 6 
stdout
Swap: 1 2
Swap: 2 3
Swap: 3 4
Swap: 5 6
Swap: 6 7
Swap: 7 8
Number of swaps: 6