Cod sursa(job #307889)

Utilizator iulia609fara nume iulia609 Data 25 aprilie 2009 13:35:15
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<fstream>
#include<string>
#define cif 26
#define dim 1000001
using namespace std;
int a[cif];
int main()
{long int n,i,j,x,k,ok; 
 char s[dim],c;

ifstream f("ordine.in");
ofstream g("ordine.out");

f.getline(s,dim,'\n');
n=strlen(s);

for(i=0;i<=n;i++)
	a[(int)s[i]-(int)'a'+1]++;

c='.';
i=1;
while(i<=n)
   {ok=0;
	for(j=1;j<=cif;j++)
	   if((a[j]==(n-i+1)/2+1)&&((char)('a'+j-1)!=c))
		   {k=j;break;}
	     else if((!ok)&&((char)('a'+j-1)!=c)&&(a[j]!=0))
			 k=j,ok=1;
	 
	 c=(char)('a'+k-1);
	 g<<c;
	 a[k]--;
	 i++;
	
    }
   g<<'\n';
   f.close();
   f.close();
   return 0;
}