Pagini recente » Cod sursa (job #1978077) | Cod sursa (job #1265259) | Cod sursa (job #1111225) | Cod sursa (job #61917) | Cod sursa (job #542418)
Cod sursa(job #542418)
#include <cstdio>
using namespace std;
FILE *f=fopen("sortari2.in", "r");
FILE *g=fopen("sortari2.out", "w");
int n, nr;
int v[1001];
int viz[1001];
int w[1001];
void swap(int &a, int &b)
{
int h=a; a=b; b=h;
}
void afis()
{
int s=0;
int ks=0;
for (int i=1; i<=n; ++i)
{
for (int j=i+1; j<=n; ++j)
if (v[i]>v[j]) ++s;
w[i]=v[i];
}
for (int k=1; k<=n; ++k)
while (w[k]!=k)
{
swap(w[k], w[w[k]]);
++ks;
}
if (ks<s) ++nr;
}
void prog(int i)
{
if (i==n+1)
{
afis();
return ;
}
for (int j=1; j<=n; ++j)
{
if (!viz[j])
{
viz[j]=1;
v[i]=j;
prog(i+1);
viz[j]=0;
}
}
}
int main()
{
fscanf(f, "%d", &n);
prog(1);
fprintf(g, "%d", nr);
fclose(f);
fclose(g);
return 0;
}