Exemplo n.º 1
0
 vector<vector<int>> permute(vector<int>& num) {
   sort(num.begin(), num.end());
   vector<vector<int>> res;
   do {
     res.push_back(num);
   } while (my_next_permutation(&num[0], num.size()));
   return res;
 }
int main(){
	int r=0,i;
	int e0[N*2],f0[N*2];
	for(i=0;i<N;i++)e0[i]=f0[i]=0,e0[N+i]=f0[N+i]=1;
	int e[N*2+1];
	int f[N*2+1];
	e[0]=f[0]=0;
	do{
		for(i=0;i<N*2;i++)e[i+1]=e[i]+e0[i];
		do{
			for(i=0;i<N*2;i++){
				f[i+1]=f[i]+f0[i];
				if(e[i]==f[i]&&e[i+1]==f[i+1])break;
			}
			if(i==N*2)r++;
		}while(my_next_permutation(f0,N*2,N*2));
	}while(my_next_permutation(e0,N*2,N*2));
	printf("%d\n",r);
}
Exemplo n.º 3
0
    vector<vector<int>> permute(vector<int>& nums) {
        sort(nums.begin(), nums.end());

        vector<vector<int>> ans;
        
        do{
            ans.push_back(nums);
        }while(my_next_permutation(nums));
        
        return ans;
    }
Exemplo n.º 4
0
int main(){
	int N,K,i;
	scanf("%d%d",&N,&K);
	int *A=(int*)malloc(4*N);
	B=(int*)malloc(4*N);
	for(i=0;i<N;i++)scanf("%d",A+i);
	for(i=0;i<N;i++)scanf("%d",B+i);
	for(i=0;i<N;i++)S+=abs(A[i]-B[i]);
	for(;K--;)R+=S,my_next_permutation(A,N,N);
	printf("%lld\n",R);
	free(A);
	free(B);
}