题目描述
你要和田忌赛马。你们各自有 𝑁N 匹马,并且要进行 𝑁N 轮比赛,每轮比赛,你们都要各派出一匹马决出胜负。
你的马匹的速度分别为 𝑢1,𝑢2,⋯,𝑢𝑛u1,u2,⋯,un,田忌的马匹的速度分别为 𝑣1,𝑣2,⋯ ,𝑣𝑛v1,v2,⋯,vn。田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛?巧合的是,你和田忌的所有马匹的速度两两不同,因此不可能出现平局。
输入格式
第一行一个整数 𝑁N。保证 1≤𝑁≤5×1041≤N≤5×104
接下来一行 𝑁N 个用空格隔开的整数,依次为 𝑢1,𝑢2,⋯ ,𝑢𝑛u1,u2,⋯,un,表示你的马匹们的速度。保证 1≤𝑢𝑖≤2𝑁1≤ui≤2N。
接下来一行 𝑁N 个用空格隔开的整数,依次为 𝑣1,𝑣2,⋯ ,𝑣𝑛v1,v2,⋯,vn,表示田忌的马匹们的速度。保证 1≤𝑣𝑖≤2𝑁1≤vi≤2N。
输出格式
输出一行,表示你最多能获胜几轮。
代码
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+1;
int n,arr[N],brr[N],num;
int main() {
cin>>n;
for(int i=0; i<n; i+=1) {
cin>>arr[i];
}
for(int i=0; i<n; i+=1) {
cin>>brr[i];
}
sort(arr,arr+n);
sort(brr,brr+n);
for(int i=0,j=0; i<n; i+=1) {
if(arr[i]>=brr[j]) {
j+=1,num+=1;
}
}
cout<<num;
return 0;
}