fbpx

Problema #190 – Oglindiri – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa