重排列
2513 重排列
有两个长度为n的序列A,B,你需要重排列A,使得满足A[i]>B[i]的i的数目尽量大。
只需输出这个最大个数即可。
输入
第一行输入一个正整数n; 第二、三行分别输出n个非负整数,表示A、B中的元素,以空格隔开; 其中1≤n≤10000,0≤A[i],B[i]≤10^9。
输出
输出一行一个数,表示最大个数
输入样例
4
2 7 11 15
1 10 4 11
输出样例
4
思路:先排序,然后贪心,把a大的先匹配
#include<iostream> #include<algorithm> using namespace std; int a[10005],b[10005]; int main(){ int n,sum=0; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; sort(a+1,a+1+n); sort(b+1,b+1+n); int ii=n,jj=n; while(ii&&jj){ if(a[ii]>b[jj]){ ii--; jj--; sum++; } else jj--; } cout<<sum<<endl; return 0; }