Cod sursa(job #305090)

Utilizator LuffyBanu Lavinia Luffy Data 16 aprilie 2009 10:56:46
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>   
#include<string>   
#define dim 1000000   
#define dimm 123   
using namespace std;   
char b[dim],a,xx;   
int nr[dimm];   
int main()   
{unsigned int i=0,n,j,m=0,x,p=0;   
 ifstream f("ordine.in");   
 ofstream g("ordine.out");   
    
  while(f>>a)
  {i++;   
   nr[int(a)]++;} n=i;     
  
  for(i=97;i<=122;i++)   
  {pas1:   
   if(nr[i]==1) {b[m]=(char)i; m++; nr[i]--;}   
   if(nr[i]>1)    
   {b[m]=(char)i; m++; nr[i]--;   
     for(j=i+1;j<=122;j++)   
      pas2:if(nr[j]>0) {pas3: b[m]=(char)j; m++; b[m]=(char)i; m++; nr[i]--; nr[j]--;   
                   if(nr[i]==0) goto pas1;   
                   if(nr[j]==0) goto pas2;   
                   else goto pas3;}   
   }}
 for(i=122;i>=97;i--)
 if(nr[i]>0) {x=nr[i]; nr[i]=0; xx=(char)i; break;}

 for(i=0;i<=m;i++)
  if(b[i]==xx) {p=i; break;}
p=p-x; 
 for(i=0;i<=m;i++)
{if(i>=p&&x>0) {g<<xx<<b[i]; x--;}
 else g<<b[i];}	

g<<'\n';      
f.close();   
g.close();   
return 0;   
  
}