#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.