回 帖 发 新 帖 刷新版面

主题:罗密欧与朱丽叶的约会!高分!

农场主约翰养了两群有世仇的牛,它们被称为蒙塔戈斯家族和卡普鲁特家族。蒙塔戈斯家族的成员,罗密欧,爱上了美丽的朱丽叶,但后者正好是卡普鲁特家族的成员。罗密欧希望与朱丽叶约会,但不希望卡普鲁特家族的其他成员发现(否则会有可怕的事情发生!)
罗密欧和朱丽叶希望在牧场栅栏边一块尽可能大的区域中相见,这样他们可以边散步边聊天。然而,这块区域中不应该有太多的卡普鲁特家族成员,否则,他们俩被发现的机会就会大得多。罗密欧发现在整个牧场栅栏边有P块草坪呈直线排列(1<=P<=1000),在这些草坪上总共有N位卡普鲁特家族的成员在吃草(1<=N<=1000)。每个卡普鲁特家族的成员在一些相邻的草坪上吃草。现在,罗密欧求助于聪明的你,希望你能找出一个最大的范围(指一些相邻的草坪),在这个范围的草坪中,至多有C(1<=C<=1000〉位卡普鲁特家族的成员在吃草。

输入格式
第一行,包含三个整数:N,P,C
第二至N+1行:每行包括一个整数X(1<=X<=P-1),代表一个卡普鲁特家族成员在栅栏边的第X和X+1块草坪之间吃草,多个卡普鲁特家族成员可以在同一块草坪内一起吃草。

样例输入(MEET.IN)
2 6 1


(解释:栅栏边的草坪分为六块:1 2 3 4 5和6。有两个卡普鲁特家族成员,一个在第二和第三块草坪上吃草,一个在第三和第四块草坪上吃草)

输出格式
只有一行:一个整数,代表一个最大的草坪范围(指这些草坪的块数),在这个范围内最多只有C个卡普鲁特家族的成员在吃草。

样例输出(MEET.OUT)
3
(解释:在第四块至至第六块草坪间只有一个卡普鲁特家族的成员在吃草)

回复列表 (共1个回复)

沙发

program meet;
  var n,p,c,i,j,x,m,k,a:integer;
      b:array[1..1000] of integer;
  begin
    read(n,p,c);
    for i:=1 to n do
      begin
      readln(a);
      b[a]:=b[a]+1; b[a+1]:=b[a+1]+1;
      end;
    for i:=1 to p do
      begin
        j:=i-1;
        k:=0;
        x:=0;
      repeat
        k:=k+1;
        j:=j+1;
        x:=x+b[j];
      until x>c;
      j:=j-1;
      if k>m then m:=k;
      end;
    writeln(m);
  end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册