Cod sursa(job #2850066)

Utilizator dumbravadianaDiana Olivia Dumbrava dumbravadiana Data 16 februarie 2022 11:01:55
Problema Ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ordine.in");
ofstream fout ("ordine.out");
int fr[256], n, i,j,ok;
char v[1000001], ch;
int main()
{
    while (fin>>ch)
    {
        fr[ch]++;
        n++;
    }
    /// formez anagrama
    v[0]='+';
    for (i=1; i<=n; i++)
    {
        /// determin litera pentru care numarul de aparitii este mai mare decat numaerul de pozitii ce trebuie
        /// completate/2  : (n-i+1)/2
        ok=0;
        for (j='a'; j<='z'; j++)
        {
            if (fr[j]>(n-i+1)/2 && j!=v[i-1])
            {
                ch=j;
                ok=1;
                break;
            }
        }
        if(ok==1){
            v[i]=ch;
            fr[ch]--;
        }
        else  /// trebuie sa pun cel mai maic caracter !=v[i-1
            for (j='a'; j<='z'; j++)
        {
            if (fr[j]!=0 && j!=v[i-1])
            {
                v[i]=j;
                fr[j]--;
                break;
            }
        }
    }
    for (i=1; i<=n; i++)
    {
        fout<<v[i];
    }
    return 0;
}