Cod sursa(job #1606539)

Utilizator stefanxdanDanila Sergiu Stefan stefanxdan Data 20 februarie 2016 12:41:08
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <cstring>
#define dmax 1000004

using namespace std;

ifstream fin("ordine.in");
ofstream fout("ordine.out");

int n,y[30],ok;
char a[dmax],b[dmax],c;

int main()
{
    int i,j;
    fin>>a;
    n=strlen(a);
    for(i=0;i<n;i++)
        y[a[i]-'a']++;
    for(i=0;i<=n;i++)
    {
        ok=1;
        for(j=0;j<=27;j++)
            if(y[j]==(n-i)/2+1)
            {
                b[i]='a'+j;
                y[j]--;
                ok=0;
            }
        for(j=0;j<=27 && ok==1;j++)
            if(y[j])
            {
                c='a'+j;
                if(c!=b[i-1] )
                {
                    b[i]=c;
                    y[j]--;
                    ok=0;
                }
            }
    }
    for(i=0;i<n;i++)
        fout<<b[i];
    return 0;
}