Cod sursa(job #281625)

Utilizator MciprianMMciprianM MciprianM Data 15 martie 2009 15:25:57
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
using namespace std;
#define INF 0x3F3F3F3F
int frecv[32];
int main(){
  char c, ant='A';
  int i, st=0, vmax, ivmax;
  ifstream f("ordine.in");
  ofstream g("ordine.out");
  while(f>>c)	frecv[c-'a']++, st++;
  f.close();
  while(st){
    vmax=-INF;
    for(i=0;i+'a'<='z';i++)
      if(vmax<frecv[i])
        vmax=frecv[i], ivmax=i;
    if(st%2==1&&(st+1)/2==vmax)
      {ant=(char)(ivmax+'a');g<<ant;st--;frecv[ivmax]--;}
    else{
      for(i=0;i+'a'<='z';i++)
        if(frecv[i]&&(char)(i+'a')!=ant){
          ant=(char)(i+'a');g<<ant;
          st--;frecv[i]--;break;
        }
    }
  }
  g<<'\n';
  g.close();
  return 0;
}