打怪兽

Problem:打怪兽

Description:
树林里有n个怪兽,杀死第i个怪兽会消耗猎人ai的血量。当猎人的血量大于杀死怪兽需要消耗的血量,猎人可以击败怪兽,并减去相应血量。树林外有m个有自知之明的猎人,他们每个人都有一个初始血量,并按顺序去杀死怪兽(杀死第一个,然后杀死第二个,然后第三个…),因外他们有自知之明,所以他们想知道自己可以击败前几个怪兽,请你告诉他们。
注意:因为需要输入输出的数据比较多,请不要使用cin,cout(使用scanf,printf)。

Input:
第一行一个数T(T<=5),代表输入数据的组数。
每组数据第一行有两个整数n,m(n,m<=100,000),代表怪兽的数量和猎人的数量。
第二行有n个整数,第i个整数ai(1<=ai<=10000)代表杀死第i个怪物消耗的血量。

接下来有m行,每行一个整数代表这个猎人的初始血量c(1<=c<=1000,000,000)。

Output:
对每组数据输出m行,每行一个数代表每个猎人能够击败前几个怪兽。

Sample Input:
1
4 2
3 5 8 5
4
10

Sample Output:
1
2

Language:C

#include 
#define N 100010

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n,m;
        scanf("%d%d",&n,&m);

	int a[N],s[N];
        int sum=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            sum+=a[i];
            s[i]=sum;
        }
        
        while(m--)
        {
            long c;
            scanf("%ld",&c);
            int max=0;
            for(int i=1;i<=n-1;i++)
            {
           	 if(c-s[i]>a[i+1] )  max=i;
               	 else  break;
            }
            printf("%d\n",max+1);
        }    
    } 
    return 0}  

你可能感兴趣的:(打怪兽)