zoukankan      html  css  js  c++  java
  • Round #428 A. Arya and Bran(Div.2)

     Bran and his older sister Arya are from the same house. Bran like candies so much, so Arya is going to give him some Candies.

    At first, Arya and Bran have 0 Candies. There are n days, at the i-th day, Arya finds ai candies in a box, that is given by the Many-Faced God. Every day she can give Bran at most 8 of her candies. If she don't give him the candies at the same day, they are saved for her and she can give them to him later.

    Your task is to find the minimum number of days Arya needs to give Bran k candies before the end of the n-th day. Formally, you need to output the minimum day index to the end of which k candies will be given out (the days are indexed from 1 to n).

    Print -1 if she can't give him k candies during n given days.

    Input

    The first line contains two integers n and k (1 ≤ n ≤ 100, 1 ≤ k ≤ 10000).

    The second line contains n integers a1, a2, a3, ..., an (1 ≤ ai ≤ 100).

    Output

    If it is impossible for Arya to give Bran k candies within n days, print -1.

    Otherwise print a single integer — the minimum number of days Arya needs to give Bran k candies before the end of the n-th day.

    Examples
     
    Input
    2 3
    1 2
    Output
    2
     
    Input
    3 17
    10 10 10
    Output
    3
     
    Input
    1 9
    10
    Output
    -1
     
    Note

    In the first sample, Arya can give Bran 3 candies in 2 days.

    In the second sample, Arya can give Bran 17 candies in 3 days, because she can give him at most 8 candies per day.

    In the third sample, Arya can't give Bran 9 candies, because she can give him at most 8 candies per day and she must give him the candies within 1 day.

    题意:一共有n天,每天都会给Bran小于等于8颗糖果,总共要给k颗糖果,

    每一天God都会给Arya糖果,给不完的糖果,就保存下来,如果还有明天就留给明天,问至少要几天(1~n)

     1 #include <iostream>
     2 #include <stdio.h>
     3 using namespace std;
     4 int main(){
     5         int n,k,i;
     6         scanf("%d %d",&n, &k);
     7 
     8         int s=0;
     9         for(i=1;i<=n;i++){
    10                 int t;
    11                 scanf("%d",&t);  //每一天得到的糖果数
    12                 s+=t;          
    13                 k-=min(s,8);     //还剩多少颗没给Bran
    14                 s-=min(s,8);     //给完后自己还剩多少,如果大于8,就留着给明天给
    15                 if(k<=0){        //给够时,相应的天数
    16                   printf("%d
    ", i);
    17                   return 0;
    18                 }
    19         }
    20         printf("-1
    ");   //没给够
    21         return 0;
    22 }
  • 相关阅读:
    Java读书笔记
    b_aw_旅游计划(树的中心变形)
    b_lc_秋叶收集器(分类讨论dp+滚动数组优化)
    b_lg_涂色(从小区间做起,讨论s[l]和s[r]的关系)
    c_lc_早餐组合(排序+双指针)
    c_aw_鱼塘钓鱼(大根堆)
    b_pat_栈(2*multiset+stack)
    c_pat_推荐系统(set模拟)
    b_lg_时态同步(后序遍历统计每棵子树的最大高度)
    b_lc_统计不开心的朋友(预处理+模拟)
  • 原文地址:https://www.cnblogs.com/z-712/p/7352604.html
Copyright © 2011-2022 走看看