首页 > 代码库 > NYOJ 683 Jim的实验

NYOJ 683 Jim的实验

Jim的实验

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

Jim进行一个实验来测量一些海绵状材料的湿度水平。实验是在一个封闭的房间进行,下图是从侧面来观察。房间的长度是N cm,在天花板上有N个滴水器。第一个滴水器固定在离左边墙的0.5cm处,每个滴水器距离1cm(如图)。同时在下面会有M个海绵,每个海绵的长度是一样的,都是长Lcm。每个海绵会吸收所以滴落在他上面的水滴。海绵的标号是从上到下的。

 


输入
第一行包括一个整数T,代表有T组测试数据;
每组测试数据第一行包括两个数N(1<=N<=50),代表房间的长度;
接下来的一行包括N个整数,第i个数num_i代表第i个滴水器每分钟滴水量(0=<num<=60)。
第三行包括两个整数 M,L,分别代表海绵的个数,和海绵的长度(0<M<N);
接下来一行包括M个整数,第i个数dis_i代表第i个海绵左端离左边墙的距离(0<=dis<=N-L),(dis_i按降序给出);

输出
输出占一行,共M个数;ans_i代表第i个海绵每分钟吸收的水滴数。每个数用空格隔开。
样例输入
3
6
3 4 1 1 5 6
3 3
3 1 0
8
15 10 20 3 8 7 30 20
2 3
5 1
4
2 5 1 3
3 2
2 0 0
样例输出
12 5 3
57 33
4 7 0
AC码:
#include<stdio.h>
int main()
{
	int T,i,j,len,n,m,L,b;
	int num[55],a[55];
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n);
		for(i=0;i<n;i++)
		{
			scanf("%d",&num[i]);
		}
		scanf("%d%d",&m,&L);
		len=n;
		for(i=0;i<m;i++)
		{
			scanf("%d",&b);
			a[i]=0;
			if(len<=b)
				continue;
			if(len>b+L)
				len=b+L;
			for(j=b;j<len;j++)
				a[i]+=num[j];
			len=b;
		}
		for(i=0;i<m;i++)
			printf("%d ",a[i]);
		printf("\n");
	}
	return 0;
}