Pagini recente » Cod sursa (job #59493) | Cod sursa (job #546342) | Cod sursa (job #2573173) | Cod sursa (job #2092861) | Cod sursa (job #542309)
Cod sursa(job #542309)
#include <cstdio>
#define file_in "sortari2.in"
#define file_out "sortari2.out"
int n,ans;
int p[100];
int viz[100];
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) printf("%d ", p[i]);
//printf("\n");}
//printf("%d %d\n", nr,max(nr1,nr2));
}
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;
}