(程序设计方法与实践)Eul的神圣法杖

Eul的神圣法杖

Background

龙神很会打Dota,就是冲进对面泉水里乱杀的那种。大家都以普通攻击能摸到龙神为荣。

Description

现在,有 n 个人都对龙神发起了恰好一次攻击。第 i 个人会在 ti 时刻对龙神进行攻击,这次攻击会让龙神损失 di 的血量。龙神受到的总伤害就是所有的 di 之和。

然而,众所周知,Eul的神圣法杖是个厉害的装备,可以让龙神在 k 个时刻内无敌,不过只能使用一次。如果龙神选择在第 p 个时刻使用Eul的神圣法杖,那么龙神将会免疫从第 p 个时刻到第 p+k-1 个时刻受到的任何伤害。龙神这么会秀,他肯定知道什么时候使用Eul的神圣法杖会让他受到的总伤害最小。甚至对于不同的 k 的取值下应该怎么使用Eul的神圣法杖,龙神都知道得一清二楚。现在,龙神把这个问题抛给了你。是时候证明你的实力了,对于不同的 k 的取值,请分别算出这时候合理使用Eul的神圣法杖时受到的最小总伤害。

Input

输入共n+q+1行。

第一行输入两个正整数 n,q,分别表示对龙神发动攻击的人数,和不同的 k 的取值的数量。

接下来的 n 行,每行输入两个数 ti,di,分别表示第 i 个人对龙神发动攻击的时刻,和龙神会损失的血量。

接下来的 q 行,每行一个数 ki,表示一种 k 的取值。

Output

输出 q 行,对于每个 k 的取值,都输出一个数,表示这时候合理使用Eul的神圣法杖时受到的最小总伤害。

Note

数据保证1 ≤ n,q ≤5000, 1 ≤ ti ≤ 10^9,1 ≤ di ≤ 10000。

在这里插入图片描述

代码如下:

#include<stdio.h>      
#include<stdlib.h>       
#include<string.h>       
#include<math.h>     
      
struct Eul        
{
   
         
    long t,d;      
}   d[5000];      
typedef struct Eul s;      
      
int cmp(const void *m, const void *n)       
{
   
         
    s *x=(s*)m;      
    s *y=(s*)n;      
    return x->t-y->t;        
}      
      
int fac(int x)    
{
   
       
    
    int y;    
    if(x==1)     
    return 1;    
    else     
    return x*fac(x-1);    
        
}    
    
int f(int x)    
{
   
       
        
    int y;    
    int z;    
    return 2*x;    
        
}    
  
int a(int x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值