Cod sursa(job #1976182)

Utilizator TESTHARD123TEST CENTRE TESTHARD123 Data 2 mai 2017 21:17:58
Problema Ordine Scor 100
Compilator cpp Status done
Runda usu3 Marime 0.65 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("ordine.in");
ofstream fout("ordine.out");
int n,fr[1005];
char s[1000155],v[1000155];
void Solve(int last){
int i;
bool ok = false;
for(i = 0; i < 26; i++)
{
if(v[last-1]!= ((char)(i+97))&& fr[i] > n/2)
{
fr[i]--;
v[last] = (char)(i+97);
ok = true;
break;
}
}
if(!ok)
{
for(i = 0 ; i < 26; i++){
if(v[last-1]!= ((char)(i+97)) && fr[i]>0)
{
v[last] = (char)(i+97);
fr[i]--;
ok = true;
break;
}
}
}
n--;
if(n>0 && ok) Solve(last+1);
}
int main()
{
int i,j;
fin>>(s+1);
n = strlen(s+1);
for(i = 1; i <= n; i++)
fr[s[i]-'a']++;
Solve(1);
fout<<(v+1)<<"\n";
return 0;
}