Cod sursa(job #462078)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 9 iunie 2010 18:31:06
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <string.h>
using namespace std;

#define MAX 1000017

char sir[MAX], k, r;
int ap[200];
int i, j, n;

int main()
{
    FILE *f = fopen ("ordine.in","r");
    FILE *g = fopen ("ordine.out","w");

    fgets (sir, sizeof(sir), f);
    n = strlen(sir);

    for( i=0; i<n; ++i)
        ++ ap[sir[i]];

    while (sir[n-1] == '\n')
        -- n;

    for (i=0; i<n; ++i)
    {
        k = 0;
        for (j='a'; j<='z'; ++j)
            if (ap[j] && !k && j != r)
            {
                -- ap[j];
                k = j;
            }
            else if (ap[j] == (n - i) / 2 + 1)
            {
                ++ ap[k];
                -- ap[j];
                k = j;
                j = 'z'+1;
            }
        fprintf (g,"%c", k);
        r = k;
    }


    fclose(g);
    fclose(f);
    return 0;
}