View Code of Problem 3699

#include<stdio.h>
#include<math.h> 
int main(){
	int L,N;
	int k[2000],f[2000];           //表示坐标和能量 
	
    while(scanf("%d %d",&L,&N)!=EOF) {
		for(int i=0;i<N;i++)
		  scanf("%d",&k[i]); 
		
		for(int i=0;i<N;i++)
		  scanf("%d",&f[i]);
		
		int min=1000000,sum=0,flag=-1; 
		for(int i=0;i<=L;i++)  {  //从0到L 
		    int s=0; 
			sum=0;      
			for(int j=0;j<N;j++){
			  s=fabs(i-k[j]);
			  if(f[j]-s>0)       //受到伤害了 
			  sum=sum+f[j]-s;   
			}
			if(min>sum){
			 min=sum;
			 flag=i;           //储存最小下标 
			}
		}  
		printf("%d\n",flag);    
		printf("%d\n",min);     
	}
}

Double click to view unformatted code.


Back to problem 3699