Cod sursa(job #237407)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 29 decembrie 2008 18:18:29
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#include<string.h>
int ok;
char s[1000001];
int divide(int p,int q){
    int st,dr,x;
    st=p;
    dr=q;
    x=s[p];
    while(st<dr){
        while(st<dr&&s[dr]>=x)
            --dr;
        s[st]=s[dr];
        while(st<dr&&s[st]<=x)
            ++st;
        s[dr]=s[st];
        s[st]=x;}
    return st;}
void qsort(int p,int q){
    int m;
    m=divide(p,q);
    if(m-1>p)
        qsort(p,m-1);
    if(m+1<q)
        qsort(m+1,q);}
void solve(){
    int i,n,x,aux;
    gets(s);
    n=strlen(s)-1;
    qsort(0,n);
    for(i=2; i<=n; ++i)
        if(s[i]==s[i-1]){
            x=i;
            while(s[x]==s[x-1])
                ++x;
            aux=s[i];
            s[i]=s[x];
            s[x]=aux;}
    printf("%s",s);}
int main(){
    freopen("ordine.in","r",stdin);
    freopen("ordine.out","w",stdout);
    solve();
    return 0;}