Cod sursa(job #997086)

Utilizator vlad.ulmeanu30Ulmeanu Vlad vlad.ulmeanu30 Data 13 septembrie 2013 12:33:28
Problema Ordine Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>

char q[1000000];
int v[26];

int main()
{
    FILE *f, *g;

    int i,s=0,a1,a2;

    f=fopen("ordine.in","r");
    g=fopen("ordine.out","w");

    fscanf(f,"%s",&q);

    //stabilesc vectorul de frecventa
    i=0;
    while(i<strlen(q))
    {
        v[q[i]-'a']++;
        i++;
    }

    //stabilesc s .

    for(i=0;i<26;i++)
        s+=v[i];

    //stabilesc a1 si a2

    a1=0;
    while(v[a1]==0)
        a1++;
    a2=a1+1;
    while(v[a2]==0)
        a2++;

    while(s>0)
    {
        while(v[a1]!=0 && v[a2]!=0)
        {
            fprintf(g,"%c",a1+'a');
            v[a1]--;s--;
            if(v[a1]!=0)
            {
                fprintf(g,"%c",a2+'a');
                v[a2]--;s--;
            }

        }
        if(v[a1]==0)
        {
            a1=a2;
            a2=a1+1;
            while(v[a2]==0)
                a2++;
        }
        else
        {
            a2++;
            while(v[a2]==0)
                a2++;

        }
    }

    fclose(f);
    fclose(g);

    return 0;
}