Yemaster摘苹果题解 Pascal

Yemaster摘苹果

时间限制: 1 Sec  内存限制: 128 MB
[提交][状态][讨论版]

题目描述

Yemaster家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,Yemaster就会跑去摘苹果。Yemaster有个n厘米高的板凳,当他不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知10个苹果到地面的高度,以及Yemaster把手伸直的时候能够达到的最大高度,请帮Yemaster算一下他能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入

输入文件apple.in包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示Yemaster把手伸直的时候能够达到的最大高度和一个整数n,表示板凳的高度,不会超过30,单位:cm。

输出

输出文件apple.out包括一行,这一行只包含一个整数,表示Yemaster能够摘到的苹果的数目。

样例输入

100 200 150 140 129 134 167 198 200 111
110 30

样例输出

5

分析

此题可以先算出Yemaster能够到的最高高度,然后给苹果排序,去掉Yemaster不能够到的苹果,算出总数即可

源程序

var

  a:array[1..12] of longint;

  n,i,m:longint;

procedure qsort(l,r:longint);  //快排,也可以用其他排序

var

  i,j,m,t:longint;

begin

  i:=l;

  j:=r;

  m:=a[(l+r)div 2];

  repeat

    while a[i]do i:=i+1;

    while a[j]>m do j:=j-1;

    if not(i>j) then

    begin

      t:=a[i];

      a[i]:=a[j];

      a[j]:=t;

      i:=i+1;

      j:=j-1;

    end;

  until i>j;

  if lthen qsort(l,j);

  if ithen qsort(i,r);

end;

begin

  for i:=1 to 10 do

  read(a[i]);

  readln(n,m);

  n:=n+m;

  qsort(1,10);

  while ndo

  dec(i);

  writeln(i);

end.

转载于:https://my.oschina.net/u/3233411/blog/833578

你可能感兴趣的:(Yemaster摘苹果题解 Pascal)