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;
}