题目描述
iko超级超级喜欢吃糖,有一天iko想出去玩,她计划从1点走到N点(按1,2,3,...,n的顺序走),每个点都有一个补给站,第i点的补给站有a[i]颗糖,从i点走到i+1点会消耗掉b[i]颗糖,iko在出游的途中可以选择三个补给站,iko想知道她走完全程到达N点时口袋里最多还能剩下几颗糖(初始时iko的口袋里一颗糖都没有)。
输入描述:
第一行输入N(3<=N<=1000) 第二行输入N个数代表a[1].......a[N] (0<=a[i]<=1000 ) 第三行输入N-1个数代表b[1]......b[N-1] ( 1<=b[i]<=1000 )
输出描述:
输出一个数字表示iko到达n点时口袋里最多剩下的糖, 若不能到达N点输出-1。
示例1
输入
3 1 3 4 3 4
输出
-1
示例2
输入
5 3 4 5 2 4 3 2 2 2
输出
3
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int N=sc.nextInt(); int[] a=new int[1001]; int[] b=new int[1001]; b[0]=0; for(int i=0;i<N;i++) { a[i]=sc.nextInt(); } for(int i=1;i<N;i++) { int t=sc.nextInt(); b[i]=b[i-1]+t;//总共需要的糖 } int ans=0; for(int i=0;i<3;i++) { int max,j; for( j=0,max=0;b[j]<=ans&&j<N;j++) { if(a[max]<a[j]) max=j; } ans+=a[max]; a[max]=0; } if(ans<b[N-1]) System.out.println(-1); else System.out.println(ans-b[N-1]); } }