Cerință
Considerăm un șir format din N elemente. Definim următoarele operații astfel:
permutare circulară la stânga: mutarea primului element la sfârșitul șirului 1 2 3 4 -> 2 3 4 1 -> 3 4 1 2
permutare circulară la dreapta: mutarea ultimului element la începutul șirului 1 2 3 4 -> 4 1 2 3 -> 3 4 1 2
Dându-se un șir format din N elemente și două numere K și P, să se permute cu K poziții la dreapta dacă P este -1, respectiv la stânga dacă P este 1.
Date de intrare
Pe prima linie se află 3numere: N , K și P. Pe următoarea linie se găsesc N numere naturale, reprezentând elementele șirului.
Date de ieșire
Se vor afișa N numere pe o singură linie, separate printr-un spațiu, reprezentând elementele șirului obținut în urma operațiilor de permutare.
Restricții
1 ≤ N ≤ 1.000.000
0 ≤ K ≤ 1.000.000
Elementele șirului sunt numere naturale cuprinse între 1 și 1.000
P poate avea doar valorile 1 și -1
Exemplu
Date de intrare Date de ieșire
4 1 -1
1 2 3 4 4 1 2 3
4 2 1
1 2 3 4 3 4 1 2
Răspunsuri la întrebare
Răspuns de
5
COROANA TE ROG!!!
#include<iostream>
using namespace std;
void ps(int v[], int n){
int x=v[n];
for(int i=n; i>=2; i--) v[i]=v[i-1];
v[1]=x;
}
void pd(int v[], int n){
int x=v[n];
for(int i=n-1;i>=1;i--) v[i+1]=v[i];
v[1]=x;
}
int main(){
int n, p, k, v[1000001];
cin>>n;
for(int i=1;i<=n;i++) cin>>v[i];
cin>>k>>p;
if(p==-1)
while(k!=0){
pd(v, n);
k--;
}
else
while(k!=0){
ps(v, n);
k--;
}
for(int i=1;i<=n;i++) cout<<v[i]<<' ';
}
Alte întrebări interesante
Ed. tehnologică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă