1037. 二哥买草

Description

二哥在网上买干草。他发现了一笔特殊的买卖。他每买一捆大小为A(1 <= A <= 1,000,000)的干草,他就能免费获得一捆大小为B(1 <= B < A)的干草,也就是说免费的那个必须大小是小于购买的那个。

然而,这笔交易是有规定的:大的一捆干草必须是高质量的,小的一捆是低质量的。二哥是个吝啬鬼,他并不在意:随便什么质量,只要能省钱就好。

给出一组N(1 <= N <= 10,000)捆高质量干草的大小,M(1 <= M <= 10,000)捆低质量的干草的大小,找出二哥最多能买多少捆干草。他能买高质量的干草,但他不能买低质量的干草(就是说,他只能通过赠送来获得低质量的草)。

Input Format

第一行给出N,M

下面N+M行,先给出高质量的N捆高质量干草的大小,再给出M捆低质量的

Output Format

二哥最多可以得到多少捆干草

Hint

对于面样例,二哥可以这样进行操作,买6得3,买3得1,买1时,不能拿到低质量的干草,最终得到5捆.

Sample Input

3 4
6
1
3
1
5
3
4

Sample Output

5


#include<iostream>
#include<algorithm>
using namespace std;

int main(){
    int n,m;
    int a[10001],b[10001];
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<m;i++){
        cin>>b[i];
    }
    int sum=0;
    sort(a,a+n);
    sort(b,b+m);
    int t=0;
    for(int i=0;i<n;i++){
        for(int j=t;j<m;j++){
            if(a[i]>b[j]){
                t=j+1;
                sum++;
                break;
            }
        }
    }
    cout<<sum+n;
    return 0;
}


原文地址:https://www.cnblogs.com/bernieloveslife/p/7895039.html