View Code of Problem 3699

#include<stdio.h>
#include<math.h>
/*判断0到l点的总伤害,取最小值*/
int xq[2000];
int f[10000];
long long route[2000]={0};
int main(void)
{
	int l,n;//2个正整数L,N
	while(scanf("%d%d",&l,&n)!=EOF)
	{
		for(int i=0;i<n;i++)
	{
		scanf("%d",&xq[i]);//N个整数,第i个数表示编号为i的血球落点坐标k[i]
	}
	for(int i=0;i<n;i++)
	{
		scanf("%d",&f[i]);//N个整数,第i个数表示编号为i的血球的能量值f[i]
	}
	for(int i=0;i<=l;i++)//l个点的坐标 
	{	//计算每个点的总伤害 
		for(int j=0;j<n;j++)//N个整数,第i个数表示编号为i的血球落点坐标k[i] 
		{
			if(f[j]-abs(xq[j]-i)>0)
			{
				route[i]+=f[j]-abs(xq[j]-i);
			}
			else
			{
				route[i]+=0;
			} 
		}
	}
	int min=0;
	for(int i=0;i<=l;i++)
	{
		if(route[i]<route[min])
		{
			min=i;
		}
	}
	printf("%d\n",min);
	printf("%lld\n",route[min]);
	}
	
	return 0;
 } 

Double click to view unformatted code.


Back to problem 3699