/* Функция swap(a, b, m) меняем местами: * x[a..a+m-1] и x[b..b+m-1] */ if rotdist == 0 || rotdist == n exit i = p = rotdist j = n - p while i != j /* инвариант: x[0..p-i] двигать не нужно x[p-i..p-1] = a (нужно поменять с b) x[p..p+j-1] = b (нужно поменять с a) x[p+j..n-1] двигать не нужно */ if i > j swap(p-i, p, j) i -= j else swap(p-i, p+j-i, i) j -= i swap(p-i, p, i)