Pagini recente » Cod sursa (job #44352) | Cod sursa (job #2877695) | Cod sursa (job #1250474) | Cod sursa (job #419899) | Cod sursa (job #1621161)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("ordine.in");
ofstream g("ordine.out");
const int NMAX=1000005;
char s[NMAX];
int fr[28];
inline bool Ok(int n)
{
bool ok=1;
for(int i=0;i<26;i++)
if(fr[i]>(n+1)/2)
ok=0;
return ok;
}
int main()
{
f>>(s+1);
int n=strlen(s+1);
for(int i=1;i<=n;i++)
fr[s[i]-'a']++;
for(int i=1;i<=n;i++)
{
for(int j=0;j<26;j++)
{
bool ok=1;
if(fr[j]>0 && s[i-1]!=j + 'a')
{
fr[j]--;
if(Ok(n-i))
{
s[i]=j+'a';
break;
}
fr[j]++;
}
}
}
g<<(s+1)<<"\n";
return 0;
}