Cod sursa(job #1606526)

Utilizator CarabasRobertCarabas Robert-Iancu CarabasRobert Data 20 februarie 2016 12:34:49
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

int f[28] , n ;
char s[1000005] , sol[1000005];
ifstream fin ("ordine.in");
ofstream fout ("ordine.out");
int main()
{
    int i , j ;
    bool ok;
    fin >> (s+1) ;
    n=strlen(s+1) ;
    for (i=1;s[i];i++) f[s[i]-'a'+1]++;
    for (i=1;i<=n;i++)
    {
        ok=false;
        for (j=1;j<=26;j++)
            if (f[j]>=(n-i+1)/2+1 && j+'a'-1!=sol[i-1])
            {
                ok=true;
                sol[i]=j+'a'-1;
                f[j]--;
                break;
            }
        if (!ok)
        {
            for (j=1;j<=26;j++)
                if (f[j]!=0 && j+'a'-1!=sol[i-1])
                {
                    sol[i]=j+'a'-1;
                    f[j]--;
                    break;
                }
        }
    }
    fout << (sol+1);
    return 0;
}