2 solutions
-
1
#include<bits/stdc++.h> using namespace std; const int N=15; int p[N],a[N],b[N]; int main() { int n,k; cin>>n>>k; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { cin>>b[i]; p[i]=i; } int ans=0; do{ int cnt=0; for(int i=1;i<=n;i++) { if(b[p[i]]>a[i]) { cnt++; } } if(cnt<=k) { ans++; } }while(next_permutation(p+1,p+n+1)); //生成女孩的排列 cout<<ans<<endl; return 0; }
-
-1
#include<bits/stdc++.h> using namespace std; int n,k; const int N=15; int ans[N]; bool st[N]; int a[N],b[N]; int cnt; void dfs(int u) { if(u==n+1) { int x=0; for(int i=1;i<=n;i++) { if(a[i]<b[ans[i]]) { x++; } } if(x<=k) { cnt++; } return ; } for(int i=1;i<=n;i++) { if(!st[i]) { st[i]=1; ans[u]=i; dfs(u+1); st[i]=0; } } } int main() { cin>>n>>k; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { cin>>b[i]; } dfs(1); cout<<cnt; return 0; }
- 1
Information
- ID
- 646
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 5
- Tags
- # Submissions
- 20
- Accepted
- 5
- Uploaded By