1 条题解

  • 0
    @ 2023-1-14 10:59:53

    题目很简单,相信不用多言。首先读入数据,然后对于每个提问兵站 KK,只需把前面的比 KK 小的兵站的人数加在一起就是答案。也可排序后再解,如下:

    program Pass;
    
    type
      node=record
        p,c:longint;
      end;
    
    var
      d:array[1..100]of node;
      o:node;
      n,m,i,j,t,k,ans:longint;
    
    begin
      readln(m,n);
      for i:=1 to n do readln(d[i].p,d[i].c);
      for i:=1 to n-1 do
        for j:=i+1 to n do
          if d[i].p>d[j].p
            then begin
              o:=d[i];
              d[i]:=d[j];
              d[j]:=o;
            end;
      readln(t);
      for i:=1 to t do
      begin
        readln(k);
        ans:=0;j:=1;
        while (j<=n)and(d[j].p<=k) do
        begin
          ans:=ans+d[j].c;
          inc(j);
        end;
        writeln(ans);
      end;
    
      close(input);close(output);
    end.
    
    
    • 1

    信息

    ID
    25
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者