Cod sursa(job #788107)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 14 septembrie 2012 09:58:57
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>
#include<cstring>
using namespace std;
int n,nr[30];
char s[1000100];

int main()
{
	int i,j,pred,now;
	bool gasit;
	ifstream fin("ordine.in");
	fin>>(s+1);
	fin.close();
	
	n=strlen(s+1);
	for(i=1;i<=n;i++)
		nr[s[i]-'a']++;
	ofstream fout("ordine.out");
	pred=-1;
	for(i=1;i<=n;i++)
	{
		gasit=false;
		for(j=0;j<26 && !gasit;j++)
		{
			if(nr[j]==(n-i+1)/2+1)
			{
				now=j;
				gasit=true;
			}
		}
		for(j=0;j<26 && !gasit;j++)
		{
			if(nr[j] && j!=pred)
			{
				now=j;
				gasit=true;
			}
		}
		fout<<(char)(now+'a');
		nr[now]--;
		pred=now;
	}
	fout<<"\n";
	fout.close();
	return 0;
}