Cod sursa(job #1724436)

Utilizator antanaAntonia Boca antana Data 3 iulie 2016 07:53:39
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include<string.h>
#include<deque>
#define MAX 1000000
#define LIT 26
using namespace std;
char s[MAX+1], v[LIT];
deque<int>dq;
int main()
{
    freopen("ordine.in", "r", stdin);
    freopen("ordine.out", "w", stdout);
    int i, pred=-1, a;
    gets(s);
    i=0;
    while(s[i]!=0)
        v[s[i++]-'a']++;
    for(int i=0;i<LIT;++i)
        if(v[i])
            dq.push_back(i);
    while(!dq.empty())
    {
        if(dq.front()!=pred){
            printf("%c", dq.front()+'a');
            v[dq.front()]--;
            pred=dq.front();
            if(v[pred]==0)
                dq.pop_front();
        }
        else
        {
            a=dq.front();
            dq.pop_front();
            printf("%c", dq.front()+'a');
            v[dq.front()]--;
            pred=dq.front();
            if(v[pred]==0)
                dq.pop_front();
            dq.push_front(a);
        }
    }
    return 0;
}