Pagini recente » Istoria paginii utilizator/osztianattila | Cod sursa (job #476636) | Cod sursa (job #2194936) | Cod sursa (job #373175) | Cod sursa (job #542468)
Cod sursa(job #542468)
#include<algorithm>
using namespace std;
#define DIM 1005
int n,a[DIM],sol,b[DIM],c[DIM];
bool v[DIM];
inline int mod (int x)
{
while(x>=999017)
x-=999017;
return x;
}
void back (int k)
{
int i,j;
if(k==n+1)
{
int sol1=0,sol2=0,aux;
for(i=1;i<=n;++i)
{
b[i]=a[i];
c[i]=a[i];
}
for(i=1;i<=n;++i)
for(j=i+1;j<=n;++j)
if(b[i]>b[j])
{
++sol1;
aux=b[j];
b[j]=b[i];
b[i]=aux;
}
for(i=1;i<=n;++i)
{
if(c[i]!=i)
{
++sol2;
for(j=i+1;j<=n;++j)
if(c[j]==i)
{
aux=c[j];
c[j]=c[i];
c[i]=aux;break;
}
}
}
if(sol2<sol1)
sol=mod(sol+1);
}
else
{
for(i=1;i<=n;++i)
if(v[i]==0)
{
a[k]=i;
v[i]=1;
back(k+1);
v[i]=0;
}
}
}
int main ()
{
freopen("sortari2.in","r",stdin);
freopen("sortari2.out","w",stdout);
scanf("%d",&n);
back(1);
printf("%d\n",mod(sol));
return 0;
}