Cod sursa(job #743819)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 6 mai 2012 12:54:38
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb

#include <fstream>

int main (void)
{
    char n;
    std::ifstream input("permutari.in");
    input.get(n);
    input.close();
    n -= '0';
    char s [8], *generator(s), *limit(s + n);
    {
        char counter('1');
        do
        {
            *generator = counter;
            ++counter;
            ++generator;
        }
        while (generator < limit);
    }
    char *last(limit - 1), *end(last - 1), *it, aux;
    std::ofstream output("permutari.out");
    while (true)
    {
        generator = s;
        while (true)
        {
            output.put(*generator);
            if (generator == last)
                break;
            output.put(' ');
            ++generator;
        }
        output.put('\n');
        generator = end;
        while (generator >= s && *generator > generator[1])
            --generator;
        if (generator < s)
            break;
        it = last;
        aux = *generator;
        while (*it < aux)
            --it;
        *generator ^= *it;
        *it ^= *generator;
        *generator ^= *it;
        ++generator;
        it = last;
        while (generator < it)
        {
            *generator ^= *it;
            *it ^= *generator;
            *generator  ^= *it;
            ++generator;
            --it;
        }
    }
    output.close();
    return 0;
}