摘彩球 |
难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B |
试题描述
|
今年是国庆60周年,学校少先队大队部举行了庆祝活动,其中有一项活动是摘彩球。大队辅导员在学校礼堂里高低不一地挂了N个彩球,请M位少先队员到礼堂里摘彩球。辅导员说:你们每人最多可以摘两个彩球,而且只许站着伸手摘,不允许借助其它工具,摘下的彩球归大家共有。由于各少先队员的身高参差不齐,怎样才能使他们摘的彩球总数最多呢?请你计算少先队员们最多能摘到多少个彩球?
|
输入
|
第一行有二个整数N 和M(N<=100,M<=20),两数间用空格隔开。
第二行有 N个整数(各数间以空格相隔),分别表示每个彩球的高度。 第三行有M个整数(各数间以空格相隔),分别表示每个少先队员伸手能达到的高度。 |
输出
|
仅一行,有一个整数,表示最多能摘到的彩球数。
|
输入示例
|
10 4 110 100 150 90 100 135 160 88 130 140 120 100 110 80 |
输出示例
|
5
|
其他说明
|
绍兴市第七届少儿信息学竞赛复赛试题(三)
|
提交网址:http://marcool.net/home/problem.htm?problemID=6
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int i,n,m,ans= 0,a[ 100],r[ 100];
scanf( " %d%d ",&n,&m);
for(i= 0;i<n;i++)scanf( " %d ",&a[i]);
for(i= 0;i<m;i++)scanf( " %d ",&r[i]);
sort(a,a+n);sort(r,r+m);
int j= 0;
for(i= 0;i<m;i++){
if(r[i]>=a[j]){j++; ans++;}
if(r[i]>=a[j]){j++; ans++;}
}
printf( " %d\n ",ans);
return 0;
}
#include <algorithm>
using namespace std;
int main(){
int i,n,m,ans= 0,a[ 100],r[ 100];
scanf( " %d%d ",&n,&m);
for(i= 0;i<n;i++)scanf( " %d ",&a[i]);
for(i= 0;i<m;i++)scanf( " %d ",&r[i]);
sort(a,a+n);sort(r,r+m);
int j= 0;
for(i= 0;i<m;i++){
if(r[i]>=a[j]){j++; ans++;}
if(r[i]>=a[j]){j++; ans++;}
}
printf( " %d\n ",ans);
return 0;
}