Rezolvare completă PbInfo #2416 seti

Cercetătorii ce lucrează la programul SETI au recepţionat două transmisii de date foarte ciudate, date care ar putea veni din partea unor civilizaţii extraterestre. Primul set de date este format din 10 caractere distincte, date în ordinea lor lexicografică, ce formează alfabetul extraterestru. A doua transmisie conţine cuvinte din exact 4 caractere.

Cerința

Cercetătorii trebuie să ordoneze lexicografic cuvintele primite în a doua transmisie (conform alfabetului extraterestru).

Date de intrare

Fișierul de intrare seti.in conţine pe prima linie cele 10 caractere ale alfabetului, iar pe fiecare din următoarele linii câte un cuvânt.

Date de ieșire

Fișierul de ieșire seti.out va conţine cuvintele ordonate, câte unul pe linie.

Restricții și precizări

  • În fişier nu sunt mai mult de 200 000 de cuvinte, iar caracterele sunt literele mici ale alfabetului englez.
  • Datele de intrare sunt corecte.

Exemplu

seti.in

abcdefghij
aaaa
fgaa
aabc
iihf

seti.out

aaaa
aabc
fgaa
iihf

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema seti:

#include <fstream>
using namespace std;

int a[10001], n;
int lit[30];
char s[15];
ifstream fin("seti.in");
ofstream fout("seti.out");

int main()
{
    int x, i, j;
    char v[6];
    fin >> s;
    for (i = 0; s[i] != 0; i++)
        lit[s[i] - 'a'] = i;
    while (fin >> v)
    {
        x = 0;
        for (i = 0; i < 4; i++)
            x = x * 10 + lit[v[i] - 'a'];
        a[x]++;
    }
    v[4] = 0;
    for (i = 0; i < 10000; i++)
        if (a[i] > 0)
        {
            x = i;
            for (j = 3; j >= 0; j--)
            {
                v[j] = s[x % 10];
                x /= 10;
            }
            while (a[i]--)
                fout << v<< "\n";
        }
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2416 seti

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2416 seti de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!