👤

După primul semestru din clasa I, Traian cunoaşte toate literele şi poate forma cuvinte. Astăzi si-a format o colecţie de cuvinte, dar i-a venit o idee mai năstruşnică: vrea să le aranjeze pe colane, de jos în sus.

Cerinţă

Cunoscând o succesiune de n cuvinte, ajutaţi-l pe Traian să le aranjeze pe coloane astfel încât pe fiecare coloană să fie scris câte un cuvânt, începând de jos în sus, menţinând ordinea cuvintelor.

Date de intrare

Fişierul de intrare alfabetar.in conţine pe prima linie numărul natural n, apoi o succesiune de n cuvinte, câte un cuvânt pe o linie.

Date de ieşire

Fişierul de ieşire alfabetar.out va conţine cele n cuvinte, afişate în ordine, pe verticală de jos în sus, astfel încât pe ultima linie a fişierului se vor afla, de la stânga la dreapta, iniţialele celor n cuvinte citite.

Restricţii

• 0 < n ≤ 100

• Lungimea fiecărui cuvânt este maxim 200 caractere.

• Se face distincţie între literele mici şi literele mari.



Exemple



alfabetar.in







4

Olimpiada

Municipala

de

Info



alfabetar.out



a

al

da

ap

ii

pc

mi o

in f

luen

OMdI





Incerc sa rezolv aceasta problema de o saptamana si algoritmii incercati merg, dar cand pun problema imi apare wrong answer pe toate exemplele. Ma poate ajuta cineva?



Răspuns :

#include <fstream>
#include <cstring>
using namespace std;
ofstream fout("alfabetar.out");
ifstream fin("alfabetar.in");
const int NMAX = 105;
const int MMAX = 205;

int n, Max, ok;
char cuvinte[NMAX][MMAX];

int main()
{
    fin >> n;
    for(int i=1; i<=n; i++) {
        fin >> cuvinte[i];
        if(strlen(cuvinte[i]) > Max) Max = strlen(cuvinte[i]);
    }

    for(int j=Max-1; j>-1; j--) {
        ok = 1;
        for(int i=1; i<=n; i++) {
            if(cuvinte[i][j]) { fout << cuvinte[i][j]; ok = 0; }
            else if(ok) continue;
            else fout << ' ';
        }
        fout << '\n';
    }

    return 0;
}