Cod sursa(job #366945)

Utilizator alexandru92alexandru alexandru92 Data 22 noiembrie 2009 11:42:29
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
/* 
 * File:   main.cpp
 * Author: virtualdemon
 *
 * Created on November 21, 2009, 4:18 PM
 */
#include <vector>
#include <fstream>
#include <cstdlib>
#include <iterator>
#include <algorithm>
#define pb push_back

/*
 * 
 */
using namespace std;
ifstream in;
ofstream out;
inline void swap( int& x, int& y )
{
    x+=y;
    y=x-y;
    x-=y;
}
int main(int argc, char** argv)
{int N, i, k, till;
 int *v;
    in.open("permutari.in");
    in>>N;
    v=new int[N];
    for( i=0; i <N; ++i )
        v[i]=i+1;
    out.open("permutari.out");
    while( true )
    {
        for( i=0; i < N; ++i )
            out<<v[i]<<' ';
        out<<'\n';
        for( i=N-2; i >= 0 && v[i] > v[i+1]; --i );
        if( i < 0 )
            break;
        for( k=N-1; v[i] > v[k]; --k );
        swap( v[i], v[k] );
        for( i+=1, k=N-1; i < k; ++i, --k )
            swap( v[i], v[k] );
    }
    //delete[] v;
    return EXIT_SUCCESS;
}