Cod sursa(job #177199)

Utilizator cyberClaudia Cardei cyber Data 12 aprilie 2008 13:57:55
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <stdio.h>
#include <algorithm>
#include <vector>

using namespace std;

struct node
{
    char key;
    node *l, *r;
} *T;
char S[65536];
vector < pair<int, int> > V;

void insert(node *&n, char c)
{
    if (n == NULL)
    {
        n = new node;
        n->key = c;
        n->l = n->r = NULL;
        return;
    }
    if (c <= n->key)
        insert(n->l, c);
    else
        insert(n->r, c);
}

void DFS(node *n, int lev = 0)
{
    if (n == NULL) return;
    V.push_back(make_pair(-lev, n->key));
    DFS(n->l, lev+1);
    DFS(n->r, lev+1);
}

void clear(node *&n)
{
    if (n == NULL) return;
    clear(n->l);
    clear(n->r);
    delete n;
    n = NULL;
}

int main(void)
{
    int i, j;

    freopen("date.in", "rt", stdin);
    freopen("date.out", "wt", stdout);
	
    for (i = 0; i < 5; ++i)
    {
        scanf("%s", S);
        clear(T);
        for (j = 0; j < strlen(S); ++j)
            insert(T, S[j]);
        V.clear();
        DFS(T);
        sort(V.begin(), V.end());
        for (j = 0; j < V.size(); ++j)
            printf("%c", V[j].second);
        printf("/n");
    }

    return 0;
}