Cod sursa(job #489744)

Utilizator cosmyoPaunel Cosmin cosmyo Data 3 octombrie 2010 14:38:01
Problema Ordine Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include<list>
int o[256];

using namespace std;
list<char> s;
int main()
{ifstream fin("ordine.in");
 ofstream fout("ordine.out");
  char c;fin.get(c);

    while(c!='\n')
    {++o[c];
     fin.get(c);
    }
  int i,j,sw;
  for(i='a';i<='z';++i)
   {sw=1;
       while(o[i]&&sw)
        {s.push_back(i);
         --o[i];
         sw=0;
         if(o[i])
          for(j=i+1;j<='z';++j)
           if(o[j])
           {sw=1;s.push_back(j);--o[j];break;}
        }
   }
  for(i='z';i>='a';--i)
   if(o[i])
    break;
 list<char>::iterator it,loc;
 it=s.end();--it;
 if(i!='a'-1)
 {
 for(;;--it)
  {if(*it==i)
    loc=it;
    if(it==s.begin())
     break;
  }
  --loc;
 for(it=loc;o[i];--it)
  {it=s.insert(it,i);
   --o[i];
  }
 }
  for(it=s.begin();it!=s.end();++it)
   fout<<*it;
   fout<<'\n';
 fin.close();
 fout.close();
 return 0;
}