Pagini recente » Cod sursa (job #2488312) | Cod sursa (job #2013907) | Cod sursa (job #1275832) | Cod sursa (job #869554) | Cod sursa (job #489744)
Cod sursa(job #489744)
#include <fstream>
#include<list>
int o[256];
using namespace std;
list<char> s;
int main()
{ifstream fin("ordine.in");
ofstream fout("ordine.out");
char c;fin.get(c);
while(c!='\n')
{++o[c];
fin.get(c);
}
int i,j,sw;
for(i='a';i<='z';++i)
{sw=1;
while(o[i]&&sw)
{s.push_back(i);
--o[i];
sw=0;
if(o[i])
for(j=i+1;j<='z';++j)
if(o[j])
{sw=1;s.push_back(j);--o[j];break;}
}
}
for(i='z';i>='a';--i)
if(o[i])
break;
list<char>::iterator it,loc;
it=s.end();--it;
if(i!='a'-1)
{
for(;;--it)
{if(*it==i)
loc=it;
if(it==s.begin())
break;
}
--loc;
for(it=loc;o[i];--it)
{it=s.insert(it,i);
--o[i];
}
}
for(it=s.begin();it!=s.end();++it)
fout<<*it;
fout<<'\n';
fin.close();
fout.close();
return 0;
}