不要让昨天 占据你的今天 夏午晴天

夏午晴天

839A Arya and Bran

A. Arya and Bran
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

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.

题意:

每天给你一点糖果,如果大于8个,就只能给8个,剩下的可以存起来,小于8个就可以全部给完

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main(){
 5     int n, k;
 6     cin >> n >> k;
 7     int a[111];
 8     for(int i = 0; i < n; i++){
 9         cin >> a[i];
10     }
11     int count = 0;
12     for(int i = 0; i < n; i++){
13         if(a[i] < 8){
14             k -= a[i];
15         }else{
16             if(a[i] == 8){
17                 k -= 8;
18             }else{
19                 k -= 8;
20                 a[i + 1] += a[i] - 8;
21             }
22         }
23         count++;
24         if(k <= 0)
25             break;
26     }
27     if(k >0){
28         cout << -1 << endl;
29         return 0;
30     }
31     cout << count << endl;
32 }

 

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,m;
 6     cin >> n >> m;
 7     int ans = 0;
 8     for(int i = 1;i <= n;i++)
 9     {
10         int x;
11         cin >> x;
12         // 模拟过程
13         ans += x;
14         // ans 当前有多少糖果
15         m -= min(ans,8);
16         ans -= min(ans,8);
17         if(m <= 0)
18             return !printf("%d\n",i);
19     }
20     return !printf("-1\n");
21 }

 

 

 

posted on 2017-08-13 19:40  夏晴天  阅读(112)  评论(0编辑  收藏  举报

导航

Live2D