Se dă un vector cu n
elemente numere naturale, numerotate de la 1
la n
, și m
perechi de indici (i,j)
, cu 1≤i<j≤n
. Fiecare secvență de elemente determinată de o pereche (i,j)
se oglindește – primul elemente din secvență se interschimbă cu ultimul, al doilea cu penultimul, etc..
Cerinţa
Să se afișeze elementele vectorului după realizarea, în ordine, a celor m
oglindiri.
Date de intrare
Fişierul de intrare oglindiri.in
conţine pe prima linie numărul n
, iar pe a doua linie cele n
elemente ale vectorului. Următoarea linie conține numărul m
, iar următoarele m
linii câte o pereche de indici i j
.
Date de ieşire
Fişierul de ieşire oglindiri.out
va conţine pe prima linie cele n
elemente ale vectorul obținute după cele m
oglindiri, separate prin câte un spațiu.
Restricţii şi precizări
1 ≤ n ≤ 100
- numerele de pe a doua linie a fişierului de intrare vor fi mai mici decât
1000
1 ≤ m ≤ 100
Exemplu
oglindiri.in
10 55 50 16 37 66 44 31 24 10 63 3 5 8 2 6 6 10
oglindiri.out
55 31 24 37 16 63 10 66 44 50
Explicație
După prima operație de oglindire, vectorul devine: 55 50 16 37 24 31 44 66 10 63
După a doua operație de oglindire, vectorul devine: 55 31 24 37 16 50 44 66 10 63
După a treia operație de oglindire, vectorul devine: 55 31 24 37 16 63 10 66 44 50
#include <bits/stdc++.h> using namespace std; ifstream cin("oglindiri.in"); ofstream cout("oglindiri.out"); int main() { int n , m; int a[101]; int b[101]; cin >> n; for(int i = 1 ; i <= n ; ++i) { cin >> a[i]; b[i]=a[i]; } cin >> m; int st , dr; for(int i = 1 ; i <= m ; ++i) { cin >> st >> dr; int ind=st; for(int j = dr ; j >= st ; --j) { b[ind]=a[j]; ind++; } for(int j = 1 ; j <= n ; ++j) { a[j]=b[j]; } } for(int i = 1 ; i <= n ; ++i) cout << a[i] << ' '; return 0; }