Pagini recente » Cod sursa (job #158124) | Cod sursa (job #2057688) | Cod sursa (job #2683979) | Cod sursa (job #1832076) | Cod sursa (job #2227066)
#include <stdio.h>
__attribute__((always_inline)) bool next_permutation(char v[], char N)
{
char i = N - 1;
while(i && v[i - 1] > v[i]) --i;
if(i == 0) return false;
char j = N - 1;
while(v[j] < v[i - 1]) --j;
v[i - 1] = v[i - 1] ^ v[j] ^ (v[j] = v[i - 1]);
for(j = N - 1; i < j; ++i, --j)
{
v[i] = v[i] ^ v[j] ^ (v[j] = v[i]);
}
return true;
}
int main()
{
freopen("permutari.in", "r", stdin);
freopen("permutari.out", "w", stdout);
char permutation[] = {49, 50, 51, 52, 53, 54, 55, 56}, buffer[1300000];
int N, index = -1;
scanf("%d", &N);
do
{
for(int i = 0; i < N; ++i)
{
buffer[++index] = permutation[i];
buffer[++index] = ' ';
}
buffer[++index] = '\n';
}while(next_permutation(permutation, N));
buffer[index] = '\0';
puts(buffer);
return 0;
}