Cod sursa(job #1724437)

Utilizator antanaAntonia Boca antana Data 3 iulie 2016 08:19:14
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#include<string.h>
#include<deque>
#define MAX 1000000
#define LIT 26
using namespace std;
char s[MAX+1], sol[MAX+2];
int v[LIT];
deque<int>dq;
int main()
{
    freopen("ordine.in", "r", stdin);
    freopen("ordine.out", "w", stdout);
    int i, n, f;
    gets(s);
    i=0;
    while(s[i]>='a' && s[i]<='z')
        v[s[i++]-'a']++;
    n=i;
    for(int i=1;i<=n;++i)
    {
        f=0;
        for(int j=0;j<LIT && !f;++j)
            if(v[j] && v[j]>=(n-i)/2 && j+'a'!=sol[i-1])
                sol[i]=j+'a', v[j]--, f=1;
        if(!f)
            for(int j=0;j<LIT && !f;++j)
                if(v[j] && sol[i-1]!=j+'a')
                    sol[i]=j+'a', v[j]--, f=1;
    }
    sol[n+1]=0;
    puts(sol+1);
    return 0;
}