Pagini recente » Cod sursa (job #208832) | Cod sursa (job #163337) | Istoria paginii runda/11_ian_2014/clasament | Cod sursa (job #1664249) | Cod sursa (job #197508)
Cod sursa(job #197508)
#include<fstream.h>
#include<string.h>
#define dim 1000002
#define dim2 30
char sir[dim];
int a[dim];
unsigned long n,i,j,cul,l;
long sf;
int main()
{
ifstream f("ordine.in");
ofstream g("ordine.out");
f.getline(sir,dim,'\n');
f.close();
n=strlen(sir);
for(i=0;i<n;i++)
{
if(!a[sir[i]-'a'+1]) cul++;
a[sir[i]-'a'+1]++;
}
for(i=0;i<=n;i++) sir[i]=(char)1;
sf=0;
for(i=1;i<dim2;i++)
{
while( a[i] && (cul!=1) )
{
sf++;
sir[sf]='a'+i-1;
a[i]--;
if(a[i]==0) cul--;
if(a[i])
for(j=i+1;j<dim2;j++)
if(a[j])
{
sf++;
sir[sf]='a'+j-1;
a[j]--;
if(a[j]==0) cul--;
break;
}
}
}
if(cul==1)
{
for(j=1;j<dim2;j++)
if(a[j])
{if(sir[sf]!=(j+'a'-1))
{sf++;
sir[sf]=j+'a'-1;
a[j]--;
}
while(a[j])
{
{
for(i=sf;i>=1;i--)
if( (sir[i]!=(j+'a'-1))&&(sir[i-1]!=(j+'a'-1)) )
{
sf++;
for(l=sf;l>i;l--)
sir[l]=sir[l-1];
sir[i]=j+'a'-1;
a[j]--;
break;
}
}
}
}
}
//g<<sir;
for(i=1;i<=n;i++) g<<sir[i];
g<<'\n';
g.close();
return 0;
}