Pagini recente » Cod sursa (job #70938) | Cod sursa (job #2135120) | Cod sursa (job #2563189) | Cod sursa (job #2471824) | Cod sursa (job #1173183)
#include<stdio.h>
using namespace std;
long a[1004];
int n,sol=0,b[1004];
int find(int x,int l=1,int r=n){
int m = (l+r)/2;
if(a[m]==x)return m;
if(x>a[m])return find(x,m+1,n);
else return find(x,1,m);
}
int pred(int x){
int rs=0;
for(int i=1;i<x;i++)
if(b[i]!=1)rs++;
return rs;
}
long fac(int x){
int p = 1;
for(int i=1;i<=x;i++)p*=i;
return p;
}
int main(){
freopen("perm3.in","r",stdin);
freopen("permutari.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
long x;
int poz,nr=n,in;
for(int i=1;i<=n;i++){
scanf("%d",&x);
poz = find(x);
b[poz]=1;
in=pred(poz);
// printf("%d\n",in);
sol+=in*fac(nr-1);
nr--;
}
printf("%d",sol+1);
}