重排列

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;
} 

原文地址:https://www.cnblogs.com/yfr2zaz/p/10748200.html