Cod sursa(job #1727342)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 10 iulie 2016 16:23:10
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <iostream>
#include <math.h>
#include <algorithm>
#include <string>
#include <string.h>

using namespace std;
#define ll long long
#define llu long long unsigned
#define pb push_back
#define mp make_pair

string problemName = "ordine";
string inFile = problemName+".in";
string outFile = problemName+".out";
ifstream fin(inFile.c_str());
ofstream fout(outFile.c_str());

int ap[26];
char v[1000005];

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']++;
    }
    char ch2;
    for(i = 1;i <= n;i++){
        int L = (n-i+1)/2+1;
        ch = '.';
        for(j = 0;j < 26;j++){
            ch2 = j+'a';
            if(ap[j] >= L && ans[i-1] != ch2){
                ch = j+'a';
                break;
            }
        }
        if(ch != '.'){
            ap[ch-'a']--;
            v[i] = ch;
        }else{
            for(j = 0;j < 26;j++){
                ch2 = j+'a';
                if(ap[j] && ch2 != ans[i-1]){
                    ap[j]--;
                    v[i] = ch2;
                    break;
                }
            }
        }
    }
    fout<<ans;
    return 0;
}