Cod sursa(job #1365991)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 28 februarie 2015 17:30:14
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <string>
#include <cstring>
#include <fstream>
using namespace std;
ifstream in("ordine.in");
ofstream out("ordine.out");
const int maxn=1000005;
char T[maxn];
int f[40];
int main()
{
    in.getline(T,maxn);
    int n=strlen(T);
    int ultim=-1;
    for(int i=1;i<=n;i++)
        f[T[i-1]-'a']++;
    for(int i=1;i<=n;i++)
    {
        int can=0;
        for(int j=0;j<=26;j++)
        {
            if(f[j]>0 && j!=ultim)
            {
                can = j;
                break;
            }
        }
        for(int j=0;j<=26;j++)
        {
            if(f[j]>(n-i+1)/2)
            {
                can = j;
                break;
            }
        }
        f[can]--;
        out<<(char) ('a'+can);
        ultim=can;
    }
    return 0;
}