Cod sursa(job #1482557)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 7 septembrie 2015 15:21:30
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <utility>
#include <vector>

using namespace std;

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

const int Sigma = 30;

int v[Sigma];

vector < pair < char, int > > A;

int main(){
    int n;
    string s;
    fin >> s;
    n = s.size();
    for(int i = 0; i < n; i++){
        v[s[i] - 'a']++;
    }
    for(int i = 0; i < Sigma; i++){
        if(v[i] != 0){
            A.push_back(make_pair('a' + i, v[i]));
        }
    }
    char last = '+';
    while(!A.empty()){
        if(A[0].first != last){
            fout << A[0].first;
            A[0].second--;
            last = A[0].first;
            if(A[0].second == 0){
                A.erase(A.begin());
            }
        } else {
            fout << A[1].first;
            A[1].second--;
            last = A[1].first;
            if(A[1].second == 0){
                A.erase(A.begin() + 1);
            }
        }
    }
    return 0;
}