Cod sursa(job #1961511)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 11 aprilie 2017 10:21:22
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>
#define ll long long
#define llu long long unsigned
#define pb push_back
#define mp make_pair
using namespace std;
ifstream fin("ordine.in");
ofstream fout("ordine.out");

int ap[26];

int main()
{
    string s;
    fin>>s;
    int i,j;
    char ch;
    int n = s.size();
    for(i = 0;i < n;i++){
        ap[s[i]-'a']++;
    }
    string ans = " ";
    for(i = 1;i <= n;i++){
        int L = (n-i+1)/2+1;
        ch = '.';
        for(j = 0;j < 26;j++){
            if(ap[j] == L){
                ch = j+'a';
                break;
            }
        }
        if(ch != '.'){
            ap[ch-'a']--;
            ans += ch;
        }else{
            for(j = 0;j < 26;j++){
                if(ap[j] && j+'a' != ans[i-1]){
                    char ch2 = j+'a';
                    ap[j]--;
                    ans += ch2;
                    break;
                }
            }
        }
    }
    ans.erase(ans.begin(), ans.begin()+1);
    fout<<ans;
    return 0;
}