Cod sursa(job #117613)

Utilizator savimSerban Andrei Stan savim Data 21 decembrie 2007 19:50:54
Problema Ordine Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#include <string.h>
int i,j,k,n;
char c[100001],rez[100001];
int a[27];
int main()
{
    
    
    freopen("ordine.in","r",stdin);
    freopen("ordine.out","w",stdout);
    
    scanf("%s",&c);
    n=strlen(c);
    for (i=n; i>=1; i--)
    {
        scanf("%d",&c[i]);
        c[i]=c[i-1];
        a[c[i]-96]++;
    }
    rez[0]='*';
    for (i=1; i<=n; i++)
    {
        int na=0,gas=0;         
        for (j=1; j<=26; j++)
            if (a[j]==(n-i+1)/2+1) 
            {
                rez[i]=char(j+96);
                gas=1;
                a[j]--;
                break;
            }
        if (!gas)
        for (j=1; j<=26; j++)
            if (a[j]!=0 && char(j+96)!=rez[i-1]) 
            {
               rez[i]=char(j+96);
               gas=1;
               a[j]--;
               break;            
            }
    }    
    for (i=1; i<=n; i++)
        printf("%c",rez[i]);    
    return 0;    
}