Pagini recente » Cod sursa (job #2217905) | Borderou de evaluare (job #898678) | Borderou de evaluare (job #712903) | Cod sursa (job #3233378) | Cod sursa (job #542310)
Cod sursa(job #542310)
#include <cstdio>
#define file_in "sortari2.in"
#define file_out "sortari2.out"
int n,ans;
int p[1100];
int viz[1100];
inline int max(int a, int b) { return a>b?a:b; }
void back(int k){
int i,j,nr,nr1,nr2;
if (k==n+1){
nr=nr1=nr2=0;
for (i=1;i<=n;++i)
for (j=i;j<=n;++j)
if (p[i]>p[j]) nr++;
for (i=1;i<=n;++i)
if (p[i]>=i) nr1++;
else nr2++;
if (max(nr1,nr2)<nr) ans++;
}
for (i=1;i<=n;++i)
if (!viz[i]){
viz[i]=1;
p[k]=i;
back(k+1);
viz[i]=0;
}
}
int main(){
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &n);
ans=0;
back(1);
printf("%d\n", ans);
return 0;
}