Cod sursa(job #366409)

Utilizator alexandru92alexandru alexandru92 Data 21 noiembrie 2009 19:43:47
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 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;
vector<int> v;
bool next_permutation()
{
    int i;
    for( i=v.size()-2; i >= 0 && v[i] > v[i+1]; --i );
    if( i < 0 )
        return false;
    int k;
    for( k=v.size()-1;  v[i] > v[k]; --k );
    v[k]+=v[i];
    v[i]=v[k]-v[i];
    v[k]-=v[i];
    reverse( v.begin()+i+1, v.end() );
    return true;
}
int main(int argc, char** argv)
{int N, i;
    in.open("permutari.in");
    in>>N;
    for( i=0; i < N; ++i )
        v.pb(i+1);
    out.open("permutari.out");
    do{
        copy( v.begin(), v.end(), ostream_iterator<int>( out, " " ) );
        out<<'\n';
       }while( next_permutation() );
    return EXIT_SUCCESS;
}