Cod sursa(job #2712857)

Utilizator tomaionutIDorando tomaionut Data 26 februarie 2021 17:43:05
Problema Ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ordine.in");
ofstream fout("ordine.out");
char s[1000005],sol[1000005];
int fr[30],n,k;
int main()
{	
	int x,i,j;
	fin >> (s + 1);
	n = strlen(s + 1);
	for (i = 1; i <= n; i++)
	{	
		x = s[i]-'a'+1;
		fr[x]++;
	}
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= 26; j++)
			if (fr[j]>(n-i+1)/2 and j+'a'-1!=sol[k])
		{
				sol[++k] = j + 'a' - 1;
				fr[j]--;
				break;
		}
		if (j == 27)
		{
			for (j=1; j<=26; j++)
				if (fr[j] and j + 'a' - 1 != sol[k])
				{
					sol[++k] = j + 'a' - 1;
					fr[j]--;
					break;
				}
		}
	}
	fout << (sol + 1);


	return 0;
}