Cod sursa(job #526659)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 29 ianuarie 2011 08:50:30
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
// infoarena: problema/ordine //
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAXN = 1000010;

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

char s[MAXN];
int n,i;

int process_group(int pos)
{
    char c = s[pos];
    int i=pos+1, j;
    while(s[i] == c)
        i++;

    for(j = pos; j<i-1; j++)
        out<<s[j]<<s[j-pos+i];
    out<<s[i-1];

    return (i-pos-1)*2;
}

int main()
{
    in>>s;
    n = strlen(s);

    sort(s, s+n);

    for(i=0; i<n; i++)
        if(i<n-1 and s[i] == s[i+1])
        {
            i += process_group(i);
        }
        else
            out<<s[i];
}