# PBinfo #4256 – oglindire_secvente – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dă un vector cu n elemente, numere naturale, și un număr k, divizor al lui n. Se împarte vectorul in secvențe disjuncte de lungime k. Să se oglindească elementele (primul element din secvență se interschimbă cu ultimul, al doilea cu penultimul, etc.) din fiecare dintre cele n/k secvențe și să se afișeze pe ecran vectorul rezultat în urma acestor modificări.

Se vor defini și apela următoarele subprograme:


citire, care citește de la tastatură valoarea lui n, a lui k și cele n elemente ale tabloului
afisare, care afișează pe ecran elementele tabloului, separate prin exact un spațiu
oglindire, care oglindește elementele unei secvențe dinr-un vector precizate prin cele două extremități st și dr.

În programele C/C++ nu se vor folosi variabile globale.

Date de intrare
Programul citește de la tastatură numerele n și k, iar apoi n numere naturale, reprezentând elementele vectorului.

Date de ieșire
Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.

Restricții și precizări

1 ≤ k < n ≤ 1000, k este divizor al lui n
cele n numere citite vor fi mai mici decât 1000

Exemplu:
Intrare

15 5
3 6 4 7 6 6 6 4 6 7 6 6 4 4 5 
Ieșire

6 7 4 6 3 7 6 4 6 6 5 4 4 6 6  
Explicație
Vectorul se împarte în 3 secvențe de lungime 5: (3 6 4 7 6), (6 6 4 6 7)și (6 6 4 4 5). Elementele din fiecare dintre ele se oglindesc și se obține secvențele (6 7 4 6 3), (7 6 4 6 6) și (5 4 4 6 6).

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
void citire(int A[], int &n, int &k)
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>A[i];
}
void afisare(int A[], int n)
{
    for(int i=1;i<=n;i++)
        cout<<A[i]<<" ";
}
void permutare(int A[], int st, int dr)
{
    for(int i=st,j=dr;i<j;i++,j--)
        swap(A[i],A[j]);
}
int main()
{
    int A[1001],n,k;
    citire(A,n,k);
    for(int i=1;i<=n-k+1;i=i+k)
        permutare(A,i,i+k-1);
    afisare(A,n);
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4256)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4256/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4256/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
