Cod sursa(job #1976627)

Utilizator bleo16783FMI Bleotiu Cristian bleo16783 Data 3 mai 2017 21:43:25
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
#include <iostream>
#include<fstream>
#include<cstring>
using namespace std;
struct trie
{
    int nr;
    trie* v[10];
    trie()
    {
        nr=0;
        for(int i=0;i<10;++i)
            this->v[i]=NULL;
    }
}*r[20];
char s[30];
int i,j,n;
/*inline int lungime(char s[])
{
    if(s[8])return 9;
    if(!s[1])return 1;
    int ls=1,ld=7,m=4;
    while(ls<ld)
    {
        if(s[m] && !s[m+1])return m+1;
        else
        {
            if(s[m+1])
            {
                ls=m+1;
                m=(ls+ld)/2;
            }
            else
            {
                ld=m-1;
                m=(ls+ld)/2;
            }
        }
    }
    return ls;
}*/
inline void ad(char s[])
{
    int k=strlen(s),i=0;
    trie *p=r[k];
    while(p->v[ s[i] - '0' ]!=NULL && i<k)
    {
        p=p->v[ s[i] - '0' ];
        ++i;
    }
    while(i<k)
    {
        p->v[ s[i] - '0' ]=new trie;
        p=p->v[ s[i] - '0' ];
        ++i;
    }
    p->nr++;
}
ofstream g("algsort.out");
void showtime(trie *root,int dim,int l)
{
    if(dim>l)
    {
        for(int i=0;i<root->nr;++i)
            g<<s<<" ";
        return ;
    }
    for(int i=0;i<10;++i)
        if(root->v[i]!=NULL)
    {
        s[dim-1]=i+'0';
        showtime(root->v[i],dim+1,l);
    }
}
int main()
{
    ifstream f("algsort.in");
    f>>n;
    for(i=1;i<11;++i)r[i]=new trie;
    for(i=0;i<n;++i)
    {
        f>>s;
        ad(s);
    }
    for(i=1;i<11;++i)
        showtime(r[i],1,i);
    return 0;
}