Cod sursa(job #462049)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 9 iunie 2010 17:04:57
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;

char sir[100000001], aux;
int n, i, j;
int poz, bun, p;

int main ()
{
    FILE *f = fopen ("ordine.in","r");
    FILE *g = fopen ("ordine.out","w");
    fscanf (f,"%s", sir);
    n = strlen(sir);

    sort (sir, sir + n);
   // printf (sir);
    i = 0;
    while (i < n)
    {
        poz = i;
        if (sir[i] == sir[i+1])
        {
            poz = 0;
            p = i + 1;
            while (sir[i] == sir[i+1] && i < n)
            {
                i ++;
                poz ++;
            }
            i --;
            bun = i;
            while (sir[i] == sir[bun])
                bun ++;
            if (poz > 1)
            {
                aux = sir[bun];
                sir[bun] = sir[p];
                sir[p] = aux;
            }
            else if (poz == 1)
            {
                aux = sir[bun];
                sir[bun] = sir[i+1];
                sir[i+1] = aux;
            }
            i = p;
        }
        else
            i ++;
    }

    fprintf (g,"%s",sir);

    fclose(g);
    fclose(f);
    return 0;
}