Решение задачи "Суперсдвиг" с Acmp

Без пояснения   Просмотров: 27


Дана последовательность из N целых чисел и число K. Необходимо сдвинуть всю последовательность (сдвиг - циклический) на |K| элементов вправо, если K – положительное и влево, если отрицательное.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{

    int n, k;
    cin >>  n;
    vector<int> a(n);
    for(int i = 0; i < a.size(); ++i)
        cin >> a[i];
    cin >>  k;
    if(k > 0){
        k%=a.size();
        for(int i = a.size() - k; i < a.size(); ++i)
            cout << a[i] << " ";
        for(int i = 0; i < a.size() - k; ++i)
            cout << a[i] << ' ';
    }
    else{
        k = abs(k);
        k%=a.size();
        for(int i = k; i < a.size(); ++i)
            cout << a[i] << " ";
        for(int i = 0; i < k; ++i)
            cout << a[i] << ' ';
    }

    return 0;
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться