fbpx

Problema #1487 – decodificare – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Un text s de lungime 2•n, unde n este un număr natural par, este codificat în felul următor: se construieşte o matrice pătratică de dimensiune n•n în care primele n caractere ale lui s se găsesc în ordine, de sus în jos, pe diagonala secundară a matricei, iar următoarele n caractere, în ordine, de sus în jos, pe diagonala principală. Restul caracterelor matricei sunt generate aleator. Matricea este transformată într-un şir de caractere cod(s) prin concatenarea şirurilor de caractere reprezentate de liniile acesteia (în ordine, de sus în jos). caractere (litere mari sau mici ale alfabetului englez), reprezentând cod(s).

Date de ieșire

Fișierul de ieșire decodificare.out va conține pe prima linie şirul decodificat.

Restricții și precizări

  • 1 ≤ n ≤ 3000
  • Recomandare: pentru tablourile de dimensiuni mari, folosiţi variabile globale.

Exemplu:

decodificare.in

8
TPQAREDSXMRYIUVE

decodificare.out

ADMITERE

Explicație

Matricea de codificare este

T P Q A
R E D S
X M R Y
I U V E
#include <bits/stdc++.h>
using namespace std;
ifstream cin("decodificare.in");
ofstream cout("decodificare.out");
int a[1501][1501];
int main()
{
    int n;
    char c;
    cin >> n;
    for(int i = 1 ; i <= n/2 ; ++i)
        for(int j = 1 ; j <= n/2 ; ++j)
            cin >> c , a[i][j]=c;
    for(int i = 1 ; i <= n/2 ; ++i)
        for(int j = 1 ; j <= n/2 ; ++j)
            if(i+j-1==n/2) cout << (char)a[i][j];
    for(int i = 1 ; i <= n/2 ; ++i)
        for(int j = 1 ; j <= n/2 ; ++j)
            if(i == j) cout << (char)a[i][j];
    return 0;
}
Comentarii

S-ar putea sa iti placa