#include <iostream>
#include <stdio.h>
using namespace std;
long long s[200005],cc,sum[200005];
inline long long dd(long long x) //最低位1对应i的值返回1<<(i-1)的值
{
return x&(-x);
}
inline long long read() //快读
{
long long x=0,f=1;
char ch;
while(ch>'9'||ch<'0')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
int main()
{
int n;
n=read();
for(int i=1;i<=n;i++)
{
s[i]=read();
cc=dd(s[i]); //返回的值为可以分的段数
sum[i]+=sum[i-1]+cc; //前i项段数和
s[i]=s[i]/cc; //分割之后的值
}
int q;
q=read();
int o=1;
while(q--)
{
long long f;
f=read();
while(sum[o]<f&&o<=n) //单调增可以直接加,求相应的i项
{
o++;
}
printf("%lld\n",s[o]);
}
return 0;
}
P8160 [JOI 2022 Final] 星际蛋糕 (Intercastellar)
最新推荐文章于 2024-07-22 10:02:43 发布