Pagini recente » Cod sursa (job #3241) | preONI 2005 runda #2 - solutii | Cod sursa (job #2947967) | Cod sursa (job #2741554) | Cod sursa (job #111423)
Cod sursa(job #111423)
#include<stdio.h>
#include<string.h>
long u,nr,maj,f[26];
int main()
{
int i,j,k;
char c,af;
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
while(scanf("%c",&c)!=EOF)
{
if(c==' ' || c=='\n')
break;
f[c-'a']++;
++nr;
}
//pas 1
maj=(nr>>1)+1;
for(i=0;i<=25;i++)
if(f[i]==maj)
{
for(j=0;j<=25;j++)
if(j!=i)
while(f[j])
{
printf("%c%c",i+'a',j+'a');
f[j]--;
}
printf("%c",i+'a');
return 0;
}
//pas 2
af=' ';
u=0;
for(i=0;i<=25;i++)
while(f[i])
{
maj=((nr-u)>>1)+1;
for(j=i+1;j<=25;j++)
if(f[j]==maj) //verificam dc exista un elem majoritar dupa i elem
{
for(k=0;k<=25;k++)
if(k!=j)
while(f[k])
{
printf("%c%c",j+'a',k+'a');
f[k]--;
}
printf("%c",j+'a');
return 0;
}
if((i+'a')!=af)
{
printf("%c",i+'a');
f[i]--;
u++;
af=i+'a';
}
else
{ //este egal cu af
for(j=i+1;j<=25;j++)
if(f[j])
{
printf("%c",j+'a');
u++;
af=j+'a';
f[j]--;
break;
}
}
}
return 0;
}