Cod sursa(job #1413026)

Utilizator hrazvanHarsan Razvan hrazvan Data 1 aprilie 2015 18:10:21
Problema Ordine Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#define BAZA 26
#define MAXN 1000000
int fr[BAZA];
char s[MAXN + 1];

int main(){
  FILE *in = fopen("ordine.in", "r");
  FILE *out = fopen("ordine.out", "w");
  fgets(s, MAXN + 1, in);
  fclose(in);
  int i, dr = 0, n;
  for(i = 0; s[i] != '\n'; i++)
    fr[s[i] - 'a']++;
  n = i;
  int min, last = -1, j;
  for(i = 0; s[i] != '\n'; i++){
    min = 0;
    while(min < BAZA && (fr[min] == 0 || last == min))
      min++;
    for(j = 0; j < BAZA; j++){
      if(fr[j] > (n - i) / 2)
        min = j;
    }
    fr[min]--;
    last = min;
    fputc('a' + min, out);
  }
  for(i = 0; i < BAZA; i++){
    if(fr[i] != 0){
      s[dr] = i + 'a';
      dr++;
    }
  }
  fclose(out);
  return 0;
}