Pagini recente » Cod sursa (job #1894047) | Cod sursa (job #1384400) | Cod sursa (job #2566656) | Cod sursa (job #3184484) | Cod sursa (job #305090)
Cod sursa(job #305090)
#include<fstream>
#include<string>
#define dim 1000000
#define dimm 123
using namespace std;
char b[dim],a,xx;
int nr[dimm];
int main()
{unsigned int i=0,n,j,m=0,x,p=0;
ifstream f("ordine.in");
ofstream g("ordine.out");
while(f>>a)
{i++;
nr[int(a)]++;} n=i;
for(i=97;i<=122;i++)
{pas1:
if(nr[i]==1) {b[m]=(char)i; m++; nr[i]--;}
if(nr[i]>1)
{b[m]=(char)i; m++; nr[i]--;
for(j=i+1;j<=122;j++)
pas2:if(nr[j]>0) {pas3: b[m]=(char)j; m++; b[m]=(char)i; m++; nr[i]--; nr[j]--;
if(nr[i]==0) goto pas1;
if(nr[j]==0) goto pas2;
else goto pas3;}
}}
for(i=122;i>=97;i--)
if(nr[i]>0) {x=nr[i]; nr[i]=0; xx=(char)i; break;}
for(i=0;i<=m;i++)
if(b[i]==xx) {p=i; break;}
p=p-x;
for(i=0;i<=m;i++)
{if(i>=p&&x>0) {g<<xx<<b[i]; x--;}
else g<<b[i];}
g<<'\n';
f.close();
g.close();
return 0;
}