Cod sursa(job #109633)
Utilizator | Felix Liviu MLF_user | Data | 25 noiembrie 2007 12:12:24 |
---|---|---|---|
Problema | Ordine | Scor | 0 |
Compilator | cpp | Status | done |
Runda | preONI 2008, Runda 1, Clasele 5-8 | Marime | 0.54 kb |
#include<stdio.h>
#include<string.h>
int vf[28];
int main()
{
char s[100000],an[100000];
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
gets(s);
unsigned long n,nr=strlen(s);
int x=0,i,l,j;
long k,pos;
for(i=0;i<nr;i++)
{
vf[s[i]-97]++;
if(x<vf[s[i]-97])
x=vf[s[i]-97];
}
n=0;
for(i=1;i<=x;i++)
{
for(l=0;l<26;l++)
if(vf[l]==i)
{
pos=0;
for(j=0;j<i;j++)
{
for(k=n;k>=pos;k--)
an[k+1]=an[k];
an[pos]=l+97;
pos=pos+2;
n++;
}
}
}
puts(an);
return 0;
}