题目描述
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]);
}
}