Pagini recente » Istoria paginii runda/quarter_2018 | Cod sursa (job #366341) | Cod sursa (job #2661733) | Cod sursa (job #1509296) | Cod sursa (job #1069469)
#include <cstdio>
#include <fstream>
int n, st[100], k, good=0, k_poz;
void afisare() {
for(int i = 1; i <= n; i++)
printf("%d ", st[i]);
printf("\n");
good++;
}
int valid(int k) {
for(int i = 1; i < k; i++)
if(st[k] == st[i])
return 0;
return 1;
}
int stiva_valida() {
int i;
for (i = 1; i < k_poz; i++)
if(st[k_poz] < st[i])
return 0;
return 1;
}
void back(int k) {
int i;
if(k > n && stiva_valida()) {
afisare();
} else
for(i = 1; i <= n; i++) {
st[k] = i;
if(valid(k))
back(k+1);
}
}
int main() {
std::ifstream infile("perm.in");
std::ofstream outfile("perm.out");
while(infile >> n >> k_poz)
back(1);
printf("%d\n", good);
good = 0;
return 0;
}