Sunteți pe pagina 1din 2

Concursul Naţional de Informatică “Marele Premiu” al Palatului Naţional al Copiilor

Ediţia a XVIII-a, 15-18 mai 2009


CLASA a IX-a

Problema ZONE
Fie matricea mat cu n linii si n coloane. Dupa impartirea matricei dupa cele 2 diagonale in 4 zone, numim:
- zona 1 zona aflata in partea de sus a matricei;
- zona 2 zona aflata in partea din dreapta;
- zona 3 zona aflata in partea de jos;
- zona 4 zona aflata in partea din stanga a matricei.
Elementele de pe cele 2 diagonale nu apartin nici unei zone.
Cerintă:
- Sa se interschimbe elementele din zona 1 cu cele din zona 3, folosind simetria fata de axa de simetrie
orizontala a matricei;
- Sa se interschimbe elementele din zona 2 cu cele din zona 4, folosind simetria fata de centru de simetrie
al matricei.
Intrare:
- fisierul zone.in care contine pe prima linie numarul n si pe urmatoarele linii n*n numere naturale
reprezentând elementele matricei mat. Elementele matricei sunt separate prin câte un spatiu.
Iesire:
- fisierul zone.out va contine matricea rezultata dupa prelucrare, afisata linie cu linie, fiecare
element separat prin cate un spatiu.

Restrictii si precizări:
-n>=3 si numarul de elemente din matrice nu depaseste 24 025.
- elementele matricei sunt numere intregi;
- afisarea matricei rezultat incepe cu prima linie a fisierului zone.out.

Exemplu:
zone.in zone.out Explicatii
5 1 22 23 24 5 Dupa interschimbarea elementelor zonei 1 cu elementele
1 2 3 4 5 20 7 18 9 16 din zona 3, folosind axa de simetrie orizontala, matricea
6 7 8 9 10 15 14 13 12 11 arata astfel:
11 12 13 14 15 10 17 8 19 6 1 22 23 24 5
16 17 18 19 20 21 2 3 4 25 6 7 18 9 10
21 22 23 24 25 11 12 13 14 15
16 17 8 19 20
21 2 3 4 25
Dupa interschimbarea elementelor din zona 2 cu cele din
zona 4, folosind simetria fata de centru de simetrie al
matricei, matricea arata asa:
1 22 23 24 5
20 7 18 9 16
15 14 13 12 11
10 17 8 19 6
21 2 3 4 25
Timp de rulare: o secundă pentru un test
#include <fstream.h>
void main()
{
int mat[155][155],n,i,j,k,aux;
ifstream in("zone.in");
ofstream out("zone.out");
in>>n;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
in>>mat[i][j];

/*zona 2 cu 4 */
for (k=0;k<(n-1)/2;k++)
for (i=k+1;i<n-1-k;i++)
{
aux=mat[n-1-i][n-1-k];
mat[n-1-i][n-1-k]=mat[i][k];
mat[i][k]=aux;
}
/*zona 1 cu 3*/
for (i=0;i<n/2;i++)
for (j=i+1;j<n-i-1;j++)
{aux=mat[i][j];
mat[i][j]= mat[n-i-1][j] ;
mat[n-i-1][j]=aux;}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++) out<<mat[i][j]<<" ";
out<<endl;
}

S-ar putea să vă placă și