Cod sursa(job #1606552)

Utilizator MirceaD99Dragu Mircea MirceaD99 Data 20 februarie 2016 12:46:41
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include<cstring>
using namespace std;
ifstream fin("ordine.in");
ofstream fout("ordine.out");
char s[1000006],b[1000006];
int a[28], n;
int main()
{
    int i,j;
    bool ok;
    fin>>(s+1);
    n=strlen(s+1);
    for(i=1;s[i];i++)
        a[s[i]-'a'+1]++;
    for(i=1;i<=n;i++)
    {
        ok=false;
        for(j=1;j<=26;j++)
            if(a[j]>=(n-i+1)/2+1 && j+'a'-1!=b[i-1])
             {
                ok=true;
                b[i]=j+'a'-1;
                a[j]--;
                break;
             }
        if(!ok)
        {
            for(j=1;j<=26;j++)
                if(a[j]!=0 && j+'a'-1!=b[i-1])
                {
                    b[i]=j+'a'-1;
                    a[j]--;
                    break;
                }
        }
    }
    fout<<(b+1);
    return 0;
}