2642 - 摘红苹果
时间限制 : 1 秒
内存限制 : 128 MB
小明爷爷家有棵苹果树,树上高低不一的长了N个苹果。一天,M个小朋友到爷爷家做客,爷爷说:你们每人最多可以摘两个苹果,而且只许伸手摘,不允许借助其它工具,摘下的苹果大家分享。由于小朋友的身高参差不齐,怎样才能使他们摘的苹果总数最多呢?请你计算机小朋友们最多能摘到多少个苹果?
题目输入
第一行两个整数N,M(N<=100,M<=20),分别表示N个苹果M个小朋友。
第二行N个整数(以空格相隔),分别表示每个苹果的高度。每个苹果的高度不超过160。
第三行M个整数(以空格相隔),分别表示每个小朋友伸手能达到的高度。每个小朋友伸手能达到的高度不超过160。
题目输出
一个整数。小朋友们最多能摘到的苹果数。
输入/输出样例
输入格式
10 4 110 100 150 90 100 135 160 88 130 140 120 100 110 80
输出格式
5
C++解答
#include<bits/stdc++.h> using namespace std; int a[110],b[25]; bool cmp(int x,int y){ return x>y; } int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n,cmp); for(int i=1;i<=m;i++) cin>>b[i]; sort(b+1,b+1+n,cmp); int k=1; int sum=0,t=0; for(int i=1;i<=m;i++) for(int j=k;j<=n;j++){ if(b[i]>a[j]){ sum++; t++; } if(t==2){ t=0; k=j+1; break; } } cout<<sum<<endl; return 0; }