Cod sursa(job #611634)

Utilizator mihai995mihai995 mihai995 Data 2 septembrie 2011 15:08:02
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
using namespace std;

const int N=30,M=1000002;
int v[N],n,p=-1;
char s[M];

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

inline int search(int last)
{
    int x;
    for (int i='z'-'a';i>=0;i--)
    {
        if (last==i)
            continue;
        if (2*v[i]-1==n)
            return i;
        if (v[i])
            x=i;
    }
    return x;
}

int main()
{
    int i,last=-1,x;
    in.getline(s,M);
    for (i=0;s[i];i++)
        v[s[i]-'a']++;
    for (n=i;n;n--)
    {
        x=search(last);
        s[++p]=x+'a';
        v[x]--;
        last=x;
    }
    s[++p]='\n';
    out<<s;
    return 0;
}