Cod sursa(job #1932971)

Utilizator 3DwArDPauliuc Edward 3DwArD Data 20 martie 2017 11:40:19
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("permutari.in");
bool folosit[9];
int  permutare[9],n;
class Writer {
  public:
    Writer(const char *name):
        m_stream(name) {
        memset(m_buffer, 0, sizeof(m_buffer));
        m_pos = 0;
    }

    Writer& operator<<(int a) {
        int many = 0;
        do {
            digit_buffer[many++] = a % 10 + '0';
            a /= 10;
        } while (a > 0);
        for (int i = many - 1; i >= 0; --i)
            putchar(digit_buffer[i]);
        return *this;
    }

    Writer& operator<<(const char *s) {
        for (; *s; ++s)
            putchar(*s);
        return *this;
    }

    ~Writer() {
        m_stream.write(m_buffer, m_pos);
    }

  private:
    void putchar(char c) {
        m_buffer[m_pos++] = c;
        if (m_pos == kBufferSize) {
            m_stream.write(m_buffer, m_pos);
            m_pos = 0;
        }
    }

    static const int kBufferSize = 32768;
    ofstream m_stream;
    char m_buffer[kBufferSize];
    char digit_buffer[30];
    int m_pos;
} g("permutari.out");
void perm(int poz){
    if(poz==n+1){
        for(int i=1;i<=n;i++)g<<permutare[i]<<" ";
        g<<"\n";
        return;
    }
    for(int i=1;i<=n;i++){
        if(!folosit[i]){
            folosit[i]=1;
            permutare[poz]=i;
            perm(poz+1);
            folosit[i]=0;
        }
    }
}
int main()
{
    f>>n;
    perm(1);
    return 0;
}