摘彩球

摘彩球
难度级别: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;
}
 
posted @ 2013-04-01 14:12  qilinart  阅读(959)  评论(0编辑  收藏  举报