#include <iostream>
void shellsort(std::pair<int, int>* a, int leng);
int main()
{
int n, i, j = 0;
std::cout << "Enter size:" << std::endl;
std::cin >> n;
std::cout << "Enter elements:" << std::endl;
std::pair<int, int>* mas = new std::pair<int, int>[n];
for (i = 0; i < n; i++)
{
std::cin >> mas[i].first;
mas[i].second = i;
}
shellsort(mas, n);
for (int i = 0; i < n; ++i) {
std::cout << mas[i].first << " ";
}
std::cout << std::endl;
for (int i = 0; i < n; ++i) {
std::cout << mas[i].second << " ";
}
std::cout << std::endl;
std::cout << "min ind: " << mas[n - 1].second << std::endl;
std::cout << "max ind: " << mas[0].second;
delete[] mas;
}
void shellsort(std::pair<int, int>* a, int leng)
{
int k = 0, i, j, p, step;
std::pair<int, int> temp;
int* gap = new int[leng];
gap[0] = leng / 2;
while (gap[k] > 1)
{
k++;
gap[k] = gap[k - 1] / 2;
}
for (i = 0; i <= k; i++)
{
step = gap[i];
for (j = step; j < leng; j++)
{
temp = a[j];
p = j - step;
while (p >= 0 && temp.first > a[p].first)
{
a[p + step] = a[p];
p = p - step;
}
a[p + step] = temp;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBzaGVsbHNvcnQoc3RkOjpwYWlyPGludCwgaW50PiogYSwgaW50IGxlbmcpOwoKaW50IG1haW4oKQp7CglpbnQgbiwgaSwgaiA9IDA7CglzdGQ6OmNvdXQgPDwgIkVudGVyIHNpemU6IiA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNpbiA+PiBuOwoJc3RkOjpjb3V0IDw8ICJFbnRlciBlbGVtZW50czoiIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6cGFpcjxpbnQsIGludD4qIG1hcyA9IG5ldyBzdGQ6OnBhaXI8aW50LCBpbnQ+W25dOwoJZm9yIChpID0gMDsgaSA8IG47IGkrKykKCXsKCQlzdGQ6OmNpbiA+PiBtYXNbaV0uZmlyc3Q7CgkJbWFzW2ldLnNlY29uZCA9IGk7Cgl9CglzaGVsbHNvcnQobWFzLCBuKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJc3RkOjpjb3V0IDw8IG1hc1tpXS5maXJzdCA8PCAiICI7Cgl9CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKCQlzdGQ6OmNvdXQgPDwgbWFzW2ldLnNlY29uZCA8PCAiICI7Cgl9CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJtaW4gaW5kOiAiIDw8IG1hc1tuIC0gMV0uc2Vjb25kIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCAibWF4IGluZDogIiA8PCBtYXNbMF0uc2Vjb25kOwoJZGVsZXRlW10gbWFzOwp9Cgp2b2lkIHNoZWxsc29ydChzdGQ6OnBhaXI8aW50LCBpbnQ+KiBhLCBpbnQgbGVuZykKewoJaW50IGsgPSAwLCBpLCBqLCBwLCBzdGVwOwoJc3RkOjpwYWlyPGludCwgaW50PiB0ZW1wOwoJaW50KiBnYXAgPSBuZXcgaW50W2xlbmddOwoJZ2FwWzBdID0gbGVuZyAvIDI7Cgl3aGlsZSAoZ2FwW2tdID4gMSkKCXsKCQlrKys7CgkJZ2FwW2tdID0gZ2FwW2sgLSAxXSAvIDI7Cgl9Cglmb3IgKGkgPSAwOyBpIDw9IGs7IGkrKykKCXsKCgkJc3RlcCA9IGdhcFtpXTsKCQlmb3IgKGogPSBzdGVwOyBqIDwgbGVuZzsgaisrKQoJCXsKCQkJdGVtcCA9IGFbal07CgkJCXAgPSBqIC0gc3RlcDsKCQkJd2hpbGUgKHAgPj0gMCAmJiB0ZW1wLmZpcnN0ID4gYVtwXS5maXJzdCkKCQkJewoJCQkJYVtwICsgc3RlcF0gPSBhW3BdOwoJCQkJcCA9IHAgLSBzdGVwOwoJCQl9CgkJCWFbcCArIHN0ZXBdID0gdGVtcDsKCQl9Cgl9Cn0=