Загрузка данных


#include <stdio.h>

int read_array(int *arr, int size) {
    for (int i = 0; i < size; i++) {
        if (scanf("%d", &arr[i]) != 1) return 0;
    }
    return 1;
}

void reverse_array(int *arr, int start, int end) {
    while (start < end) {
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        start++;
        end--;
    }
}

// Алгоритм сдвига через 3 реверса (самый элегантный и без доп. памяти)
void cyclic_shift(int *arr, int size, int c) {
    if (size == 0) return;
    
    // Нормализуем сдвиг (чтобы c было в пределах 0..size-1)
    c = c % size;
    if (c < 0) {
        c = c + size;
    }

    // Сдвиг влево на c эквивалентен:
    reverse_array(arr, 0, c - 1);
    reverse_array(arr, c, size - 1);
    reverse_array(arr, 0, size - 1);
}

void print_array(int *arr, int size) {
    for (int i = 0; i < size; i++) {
        printf("%d", arr[i]);
        if (i < size - 1) printf(" ");
    }
    printf("\n");
}

int main(void) {
    int n;
    if (scanf("%d", &n) != 1 || n <= 0 || n > 10) {
        printf("n/a\n");
        return 1;
    }

    int arr[10];
    if (!read_array(arr, n)) {
        printf("n/a\n");
        return 1;
    }

    int c;
    if (scanf("%d", &c) != 1) {
        printf("n/a\n");
        return 1;
    }

    cyclic_shift(arr, n, c);
    print_array(arr, n);

    return 0;
}