Cod sursa(job #1427673)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 2 mai 2015 20:23:45
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <cstring>
#define DIM 1000010
using namespace std;

ifstream fin ("ordine.in" );
ofstream fout("ordine.out");

int N, M, i, j, K, ok, minim;
char S1[DIM], S2[DIM];
int F[200];

void SetUp(){
     fin >> S1 + 1;
     N = strlen(S1 + 1);
     for(i = 1; i <= N; i ++)
          F[S1[i] - 'a' + 1] ++;
     return;
}

void CodeExpert(){
     for(i = 1; i <= N; i ++){
          ok = 0;
          for(j = 1; j <= 26; j ++){
               if(F[j] >= (N-i+1)/2+1 && j + 'a' - 1 != S2[i-1] - 0){
                    ok = 1;
                    S2[i] = j + 'a' - 1;
                    F[j] --;
                    break;
               }
          }
          if(ok == 0){
               for(j = 1; j <= 26; j ++){
                    if(F[j] != 0 && S2[i-1] - 0 != j + 'a' - 1){
                         S2[i] = j + 'a' - 1;
                         F[j] --;
                         break;
                    }
               }
          }
     }
     for(i = 1; i <= N; i ++)
          fout << S2[i];
     return;
}

int main(){
     SetUp();
     CodeExpert();
     return 0;
}