#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
using namespace std;//每个信道只能分配给一个用户
//一个用户可以分配多个信道int get_count(vector<int> pre, vector<int> arr, int n){int count = 0;int lost = 0;//不够,剩余的for(int i = 0; i < arr.size(); i++){int num = 1;//表示现在使用了n个阶乘为i的信道while(num<=arr[i]){//当信道大小为0,退出if(lost + pre[i]>= n){count++;lost = 0;//剩余归零num++;}else{lost = lost + pre[i];num++;//每次只加上一次信道大小,进行比较}}}return count;
}
int main() {int n;cin >> n;//信道阶数vector<int> arr(n+1);//信道阶数对应的个数 for(int i = 0; i < n + 1; i++){cin >> arr[i];}int req;cin >> req;//单个用户需要传输的数据量vector<int> pre(n+1);int p = 1;//用来计算2的n阶乘for(int i = 0; i < n+1;i++){pre[i] = p;p = p * 2;}int count = get_count(pre, arr,req);cout << count << endl;
}