Pagini recente » Cod sursa (job #479470) | Cod sursa (job #2983580) | Cod sursa (job #2970737) | Cod sursa (job #1266512) | Cod sursa (job #542460)
Cod sursa(job #542460)
#include<stdio.h>
int N,v[1000],n,a[1000],p[1010],nr;
void inter(int &x,int &y)
{
int q;
q=x;
x=y;
y=q;
}
int calc()
{
int s=0;
for(int i=1;i<=N;++i)
for(int j=i+1;j<=N;++j)
if(p[i]>p[j])
++s;
return s;
}
int calc2()
{
int s=0;
for(int i=1;i<=N;++i)
{
while(p[i]!=i)
{
++s;
inter(p[i],p[p[i]]);
}
}
return s;
}
void back(int k)
{
if(k==n+1)
{
for(int i=1;i<=n;++i)
p[i]=a[i];
int a=calc();
int b=calc2();
if(a!=b)
++nr;
if(nr>=999017)
nr-=999017;
}
else
for(int i=1;i<=n;++i)
{
if(v[i]==0)
{
v[i]=1;
a[k]=i;
back(k+1);
v[i]=0;
}
}
}
int main()
{
freopen("soratri2.in","r",stdin);
freopen("sortari2.out","w",stdout);
scanf("%d",&n);
N=n;
back(1);
printf("%d\n",nr);
}