Pagini recente » Cod sursa (job #2219925) | Cod sursa (job #397052) | Cod sursa (job #937157) | Cod sursa (job #1812880) | Cod sursa (job #2219655)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ordine.in");
ofstream out("ordine.out");
std::map<char,int>ap;
int main()
{
char x;
int nr=0;
while(in>>x)
{nr++;
ap[x]++;
}
bool prim=false;
char y;
while(nr--)
{ if(!prim)
{
prim=true;
for (std::map<char,int>::iterator it=ap.begin(); it!=ap.end(); ++it)
{y=it->first;it->second--; break;
}
out<<y;
}
else
{
bool ok =false;
for (std::map<char,int>::iterator it=ap.begin(); it!=ap.end(); ++it)
if(it->second>nr/2 and it->first!=y and it->second)
{
out<<it->first; --it->second;
ok=true;
y=it->first;
break;
}
if(!ok)
for (std::map<char,int>::iterator it=ap.begin(); it!=ap.end(); ++it)
{ //if(!it->second)ap.erase(it);
if(it->second && it->first!=y)
{
out << it->first; it->second--; y=it->first; break;
}
}
}
}
return 0;
}