Pagini recente » Cod sursa (job #3162502) | Cod sursa (job #951308) | Cod sursa (job #3245526) | Cod sursa (job #1246667) | Cod sursa (job #1961771)
#include <fstream>
using namespace std;
ifstream f("ordine.in");
ofstream g("ordine.out");
#define nmax 1000002
char s[nmax],a[nmax];
int cnt[30],lit,i;
int apel()
{
int m,j;
m=29;
for(j=0;j<=lit;j+=1)
if(j+'a'!=a[i-1] and cnt[j]>cnt[m])
m=j;
return m;
}
int main()
{
int n,l,m,j;
i=1;
while(f>>s[i])
{
cnt[s[i]-'a']+=1;
i+=1;
}
s[i+1]=0;
i-=1;
n=i;
l=n;
lit='z'-'a';
for(i=1;i<=n;)
{
m=apel();
if(cnt[m]>=(l+1)/2)
{
cnt[m]-=1;
a[i]=m+'a';
i+=1;
l-=1;
}
if(i<=n)
{j=0;
while(cnt[j]==0 or j+'a'==a[i-1])
j+=1;
a[i]=j+'a';
cnt[j]-=1;i+=1;l-=1;}
}
a[n+1]=0;
g<<a+1;
return 0;
}