Cod sursa(job #611634)
Utilizator | Data | 2 septembrie 2011 15:08:02 | |
---|---|---|---|
Problema | Ordine | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.66 kb |
#include <fstream>
using namespace std;
const int N=30,M=1000002;
int v[N],n,p=-1;
char s[M];
ifstream in("ordine.in");
ofstream out("ordine.out");
inline int search(int last)
{
int x;
for (int i='z'-'a';i>=0;i--)
{
if (last==i)
continue;
if (2*v[i]-1==n)
return i;
if (v[i])
x=i;
}
return x;
}
int main()
{
int i,last=-1,x;
in.getline(s,M);
for (i=0;s[i];i++)
v[s[i]-'a']++;
for (n=i;n;n--)
{
x=search(last);
s[++p]=x+'a';
v[x]--;
last=x;
}
s[++p]='\n';
out<<s;
return 0;
}